您的位置:首页 > 产品设计 > UI/UE

HDU-1005 Number Sequence 循环结

2017-07-04 09:19 429 查看
一开始的思路是遇到11就开始循环,后来发现,发现当A=5555,B=666666时数列是1142142142142,这种情况不是以11开始循环的,依然超时就罢了,关按11判断的话就错了。因为两个结果都一定是0到6之间的数,所以一定会循环,而且循环节不会超过7*7=49。(因为前面2个数若相同,则第三个之后的数必相同,而在49内必能找到2个相邻的数在前面出现过)。

题目链接:HDU-1005

#include<stdio.h>
int main()
{
int i,a,b,m,n,l,f[50];
while(~scanf("%d %d %d",&a,&b,&n)&&n)
{
f[1]=f[2]=1;
if(n<=2)f
=1;
if(n>2)
{
while(n>49)
{
n=n-49;
}
for(i=3;i<=n;i++)
{
f[i]=(a*f[i-1]+b*f[i-2])%7;
}
}
printf("%d\n",f
);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: