码迷,mamicode.com
首页 > 其他好文 > 详细

Comet_oj_#0_A

时间:2020-01-20 00:11:15      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:none   pre   const   col   close   两种   通过   one   str   

技术图片

 

 这道题通过简化方程可得,当n为平方数的时候,解为无穷,当%4不为0时为0 0;计算

但是要小心,这道题的代码要经过优化。一下为两种代码,一个tle,一个accept。

技术图片
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
int main()
{
    int t;
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    cin>>t;
    while(t--)
    {
        ll n;
        cin>>n;
        double k=sqrt(n);
        if(k==(int)k)
        {
            cout<<"infty"<<endl;
          continue;
        }
          if(n%4!=0){
            cout<<0<<" "<<0<<endl;
          continue;
        }else
        {
            int cnt=0;
            ll ans=0ll;
                n/=4;
                int m=sqrt(n);
                for(ll i=1;i<=m;i++)
                {
                    if((n%i)==0)
                    {
                        ans+=n*(i+n/i);
                        ans%=mod;
                        cnt++;
                    }
                }
                cout<<cnt<<" "<<ans<<endl;
        }
    }
    return 0;
}
tle
技术图片
#include<iostream>
#include<cmath>
using namespace std;
typedef long long ll;
const ll mod=1e9+7;
int main()
{
    //freopen("D:\\common_text\\code_stream\\in.txt","r",stdin);
    //freopen("D:\\common_text\\code_stream\\out.txt","w",stdout);
    int t;
    ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
    cin>>t;
    while(t--)
    {
        int n;
        cin>>n;
        double k=sqrt(n);
        if(k==(int)k)
        {
            cout<<"infty"<<endl;
          continue;
        }
          if(n%4!=0){
            cout<<0<<" "<<0<<endl;
          continue;
        }else
        {
            int cnt=0;
            ll ans=0ll;
                n/=4;
                int x,y,z;
                int m=sqrt(n);
                for(int i=1;i<=m;i++)
                {
                    if((n%i)==0)
                    {
                        ans+=1ll*n*(i+n/i);
                        ans%=mod;
                        cnt++;
                    }
                }
                cout<<cnt<<" "<<ans<<endl;
        }
    }
    return 0;
}
accept

以上告诉我们,要学会优化!

Comet_oj_#0_A

标签:none   pre   const   col   close   两种   通过   one   str   

原文地址:https://www.cnblogs.com/Ean1zhi/p/12215937.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!