码迷,mamicode.com
首页 > 其他好文 > 详细

循环节 HDU1005

时间:2015-09-02 10:38:13      阅读:123      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!