HUNAN -11566 Graduation Examination(找规律)

http://acm.hunnu.edu.cn/online/?action=problem&type=show&id=11566&courseid=0

输入n,求出第n个fib数的stable value(每次把一个数所有位数相加,直到变成个位输出) 

题目说明任何数都可以在有限步数内完成目标.

思路:学弟推出的f[n]最终的值是f[n]对9取模,那么 既然对9取模就一定会出现周期,算出周期为24。

首先预处理出1个周期内的所有数,然后每次输入输出对应的数即可.

 1 #include<stdio.h>
 2 #include<algorithm>
 3 #include<string.h>
 4 #define maxn 100
 5 #define ll long long
 6 using namespace std;
 7 short a[105];
 8 void Fcci()  //预处理出 a
 9 {
10     a[0]=9;
11     a[1]=1;a[2]=1;
12     for(int i=3;i<=maxn;i++)
13         a[i]=(a[i-1]+a[i-2])/10+(a[i-1]+a[i-2])%10;
14 }
15 int main()
16 {
17     //freopen("a.txt","w",stdout);
18     __int64 ff;
19     Fcci();
20     while(~scanf("%I64d",&ff))
21     //for(int i=1;i<100;i++)
22     {
23         if(ff==0)break;
24         printf("%d\n",a[ff%24]);
25     }
26 }

 

posted @ 2015-08-13 22:03  NowAndForever  阅读(236)  评论(0编辑  收藏  举报