pku 2917 Diophantus of Alexandria

pku 2917 Diophantus of Alexandria

一道数学题。弱弱不会做。。

开始一直钻牛角尖。。用暴力把数据跑了一下。然后找规律。。发现好像是找n的互质的质因数对数。。
小的数据用手算是可以算出来的。。但是不知道怎么用程序来算。。

后面参考pc的。。。。知道了是怎么回事。。
我想以后如果有需要求质因数对数的个数。。可以用这种方法反过来求。。

下面是代码:

#include < iostream >
int  N;
int  solve( int  N)
{
    
int  i,ans = 1 ,t;
    
for (i = 2 ;i * i <= N;i ++ )
    {
        t
= 0 ;
        
while (!(N%i))
        {
            t
++ ;
            N
/= i;
        }
        ans
*= 2 * t + 1 ;
    }
    
if (ans == 1 ||N! = 1 )ans *= 3 ;
    return ans;
}
int  main()
{
    
int  T,cas,id;
    scanf(
" %d " , & T);
    
for (cas = 1 ;cas <= T;cas ++ )
    {
        scanf(
" %d " , & N);
        id
= solve(N);
        
if (N == 1 )id = 1 ;
        printf(
" Scenario #%d:\n%d\n\n " ,cas,(id + 1 ) / 2 );
    }
    return 
0 ;
}

你可能感兴趣的:(pku 2917 Diophantus of Alexandria)