求出斐波拉且数列第n项对19260817取余的结果。我一开始是先求出第n项的值,然后在对19260817进行取余操作,但是当n的值非常大的时候,结果已经溢出,所以正确做法是再求得过程中就进行取余操作。
代码如下:
#include <stdio.h>
int main()
{
long n;
long f0 = 0;
long f1 = 1;
long f2;
scanf("%ld",&n);
if(n == 0)
{
f2 = 0;
}
else if(n == 1)
{
f2 = 1;
}
else
{
n -= 1;
while(n--)
{
f2 = (f0 + f1) % 19260817;
f0 = f1;
f1 = f2;
}
}
printf("%ld\n",f2);
return 0;
}