您的位置:首页 > 其它

循环节 HDU1005

2015-09-02 09:59 232 查看
#include <iostream>
#include <cstdio>
#include <cstring>

using namespace std;

int arr[10000];

int main()
{
int a,b,n,s,e;
while(scanf("%d%d%d",&a,&b,&n)!=EOF)
{
if(a==0&&b==0&&n==0)
break;
memset(arr,0,sizeof(arr));
arr[1]=arr[2]=1;
int flag=1;
for(int i=3;i<=n&&flag;i++)
{
arr[i]=(arr[i-1]*a+arr[i-2]*b)%7;
for(int j=2;j<i;j++)
{
if(arr[j]==arr[i]&&arr[j-1]==arr[i-1])
{
s=j;
e=i;
flag=0;
break;
}
}
}
if(!flag)
{
int se=(n-s)%(e-s);
cout<<arr[se+s]<<endl;
}
else
{
cout<<arr
<<endl;
}
}
return 0;
}


View Code
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: