NOJ 865 F(x)

来源:互联网 发布:linux设置时间命令 编辑:程序博客网 时间:2024/05/20 03:38

题目链接~~>

                    这一题我感觉是考验你的优化能力,一种方法(这题很不淡定,因为Case Wa了两次)。

代码:

#include<stdio.h>int main(){    long long int n,i,j,sum,k ;    int q=1 ;    while(scanf("%lld",&n)!=EOF)    {        sum=0 ;        for(i=1;i*i<=n;i++)//  找因子 只需找到sqrt(n) ;分两步:如果i*i!=n ;        {                  // 再去找n/i 情况  例如:n=10 ,i=2时  分别找2和5的所有因子            if(n%i==0)                 {                k=n/i ;                for(j=1;j*j<=i;j++)                  if(i%j==0)                   {                       if(j*j!=i)                               sum+=2 ;                       else    sum+=1 ;                   }            }            if(n%i==0&&k!=i)            {                for(j=1;j*j<=k;j++)                   if(k%j==0)                    {                        if(j*j!=k)                              sum+=2 ;                        else  sum+=1 ;                    }            }        }        printf("Case %d: %lld\n",q++,sum) ;//别忘了Case!!!!淡定!    }    return 0 ;}


 

原创粉丝点击