最近遇到一个斐波拉契数列的题(没错又是取模),并且是项的值取模得到的值作为结果,把自己难到了,于是又去找学长了。。。。。。。。
总结:
任何小的数除以一个大的数,余数是自己,比如5%6=5,1%10=1……
任意两个数的和取模得到的数等于它们各自的模(取向同的数的模)的和再取模(避免大于10)
放上学长的图:
原题:
代码如下:
int main()
{
int *sum = (int*)malloc(33000000 * sizeof(int)); //开辟内存用来存储数据
int T, M;
sum[0] = sum[1] = 1;
scanf("%d %d", &T, &M);
for (int i = 2; i < 33000000; ++i)
{
sum[i] = (sum[i - 1] % M + sum[i - 2] % M) % M; //模运算
}
int temp;
for (int i = 0; i < T-1; ++i)
{
scanf("%d", &temp);
printf("%d\n", sum[temp - 1]);
}
scanf("%d", &temp);
printf("%d", sum[temp - 1]);
free(p);
system("pause");
return 0;
}