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 }