由于1<=n<=100000000,太大,本题不能开那么大的数组,因此只能寻找循环节,mod7的循环节(a,b)0<=a<=6,0<=b<=6,有7*7钟情况,因此循环节为49.打表打表打表!!!!
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a,b,i,n,d[50];
while(scanf("%d%d%d",&a,&b,&n)!=EOF)
{
if(a==0&&b==0&&n==0)
{
break;
}
d[1]=1;d[2]=1;
for(i=3;i<=49;i++)
{
d[i]=(a*d[i-1]+b*d[i-2])%7;
}//打出1-49的表
printf("%d\n",d[n%49]);//后面的对49取余,如50取余就为1,对应d[1]
}
return 0;
}
杭电OJ1005--数字序列
最新推荐文章于 2024-02-17 21:35:49 发布