問題描述
fibonacci數列的遞推公式為:fn=fn-1+fn-2,其中f1=f2=1。
當n比較大時,fn也非常大,現在我們想知道,fn除以10007的餘數是多少。
輸入格式
輸入包含乙個整數n。
輸出格式
輸出一行,包含乙個整數,表示fn除以10007的餘數。
說明:在本題中,答案是要求fn除以10007的餘數,因此我們只要能算出這個餘數即可,而不需要先計算出fn的準確值,再將計算的結果除以10007取餘數,直接計算餘數往往比先算出原數再取餘簡單。
樣例輸入
10樣例輸出
55樣例輸入
22樣例輸出
7704
資料規模與約定
1 <= n <= 1,000,000。
**:
#include
#include
#include
#define n 1000009
long
long
int a[n]
;using
namespace std;
intmain()
while
(cin>>n&&n!=0)
}
#include
#include
#include
#define n 1000009
int a[n]
;using
namespace std;
intmain()
while
(cin>>n&&n!=0)
}
收穫感悟:#define定義多大的數都可以,
能支援十進位制下大約10位數-21474836482147483647[-2^312^31-1]
longlong能支援十進位制下大約19位數 你要的數是可以存下的
long long 為64位整數型別,一般的long long為64位,由於負數補碼的原因,第一位作為符號位,因此有63位可用。則取值範圍為-263到263-1 取210約等於1000多一點,則大概為9x1018這麼多,9後面18個0,建議大大於這個數就考慮高精度相關 具體值為9223372036854775807
或者考慮無符號的unsigned long long 不能表示負數但是可以到2^64-1 具體取值到18446744073709551615 18後面18個0,1.8410^19
你的數是7後面18個0,正好可以long long 存下,但是再加兩下基本就爆負了,基本沒有可運算性,作累加統計還行,但要參加大數運算還是高精度或者兩個高低位longlong開個結構體搞下吧。建議高精度背下來。
參考資料:
c++有如下基本資料型別
bool 布林型 - true,false
(signed) char 有符號字元型 1 -128~127
unsiged char 無符號字元型 1 0~255
(signed)short(int) 有符號短整型 2 -32768~32767
unsignedshort(int) 無符號短整型 2 0~65535
(signed) int 有符號整型 4 -(2的31次方)~2的31次方-1
unsigned (int) 無符號整型 4 0~(2的32次方-1)
(signed)long (int) 有符號長整型 4 -(2的31次方)~(2的31次方-1)
unsigned long(int) 無符號長整型 4 0~(2的32次方-1)
float 實型 4 -(10的38次方)~10的38次方
double 雙精度型 8 -(10的308次方)~10的308次方
long double 長雙精度型 8 -(10的308次方)~10的308次方
void 無值型 0 無值
入門訓練 Fibonacci數列
入門訓練 fibonacci數列 時間限制 1.0s 記憶體限制 256.0mb 問題描述 fibonacci數列的遞推公式為 fn fn 1 fn 2,其中f1 f2 1。當n比較大時,fn也非常大,現在我們想知道,fn除以10007的餘數是多少。輸入格式 輸入包含乙個整數n。輸出格式 輸出一行,...
入門訓練 Fibonacci數列
入門訓練 fibonacci數列 時間限制 1.0s 記憶體限制 256.0mb 問題描述 fibonacci 數列的遞推公式為 fn f n 1 f n 2,其中f1 f 2 1。當n比較大時,fn 也非常大,現在我們想知道,f n除以10007的餘數是多少。輸入格式 輸入包含乙個整數n。輸出格式...
入門訓練 Fibonacci數列
入門訓練 fibonacci數列 時間限制 1.0s 記憶體限制 256.0mb 問題描述 fibonacci數列的遞推公式為 fn fn 1 fn 2,其中f1 f2 1。當n比較大時,fn也非常大,現在我們想知道,fn除以10007的餘數是多少。輸入格式 輸入包含乙個整數n。輸出格式 輸出一行,...