首页 > 其他 > 详细

循环节 HDU1005

时间:2015-09-02 10:35:34      阅读:225      评论:0      收藏:0      [点我收藏+]
技术分享
 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 
 5 using namespace std;
 6 
 7 int arr[10000];
 8 
 9 int main()
10 {
11     int a,b,n,s,e;
12     while(scanf("%d%d%d",&a,&b,&n)!=EOF)
13     {
14         if(a==0&&b==0&&n==0)
15             break;
16         memset(arr,0,sizeof(arr));
17         arr[1]=arr[2]=1;
18         int flag=1;
19         for(int i=3;i<=n&&flag;i++)
20         {
21             arr[i]=(arr[i-1]*a+arr[i-2]*b)%7;
22             for(int j=2;j<i;j++)
23             {
24                 if(arr[j]==arr[i]&&arr[j-1]==arr[i-1])
25                 {
26                     s=j;
27                     e=i;
28                     flag=0;
29                     break;
30                 }
31             }
32         }
33         if(!flag)
34         {
35             int se=(n-s)%(e-s);
36             cout<<arr[se+s]<<endl;
37         }
38         else
39         {
40             cout<<arr[n]<<endl;
41         }
42     }
43     return 0;
44 }
View Code

 

循环节 HDU1005

原文:http://www.cnblogs.com/wsruning/p/4777750.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!