HUNAN -11566 Graduation Examination(找規律)

林堯彬發表於2020-04-04

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 }

 

轉載於:https://www.cnblogs.com/nowandforever/p/4728583.html

相關文章