程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 西電1232 求斐波拉契數列的後四位

西電1232 求斐波拉契數列的後四位

編輯:C++入門知識

Description 定義一個序列:f[0]=0,f[1]=1,f[n]=f[n-1]+f[n-2]。那麼,f[10]是多少,f[100]是多少,f[1000]呢... 模擬的話顯然最後結果非常大,現在只要你輸出f[n]的最後四位,前面的0不輸出,若答案為10000,輸出0,若答案為10001,輸出1. 0 ≤ n ≤ 1,000,000,000       Input 多組數據,每組一個n Output f[n]的最後四位 Sample Input 4 Sample Output 3 Hint Source LLL   看到mod=10000 而有1000000000個數據 那麼一定有重復的 如果f(n)==f(1)&&f(n-1)==f(0)  那麼這時候循環節就找到了   結果為15000 好像     [cpp]   #include<iostream>   #include<cstdio>   using namespace std;   int a[30001];   int main()   {       int n;       a[0] = 0;       a[1] = 1;       for(int i=2; i<=30000; i++)           a[i] = (a[i-1]%10000+a[i-2]%10000)%10000;       while(scanf("%d", &n)!=EOF)       {           if(n <= 30000)               printf("%d\n", a[n]);           else               printf("%d\n", a[n%30000]);       }       return 0;   }    

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved