求解fib(n)中,n的所有因子的个数,题目n<700,本来以为用大数做,
但是看了某个大牛的算法,就是牛,利用和求余的算法fib[i][j]表示fib(i)%j的值
直接上代码吧
#include <stdio.h>
#include <math.h>
int fab[800][800];
int main()
{
int n,m,num,N;
for(int i=2;i<=700;i++)
{
fab[0][i]=1;
fab[1][i]=1;
for(int j=2;j<=700;j++)
fab[j][i]=(fab[j-1][i]+fab[j-2][i])%i;
}
scanf("%d",&N);
while(N--){
num=0;
scanf("%d",&n);
for(int i=2;i<=n;i++)
if(fab[n][i]==0)num++;
printf("%d\n",num);
}
return 0;
}

浙公网安备 33010602011771号