關於"斐波那契數列"你能做到哪一步?
阿新 • • 發佈:2019-03-23
內存限制 clas fab odm 分享圖片 內存 const mil 研究
關於董永鍵老師一本通書的裴波那契數列你能做到哪一個?
反正我是沒做完。
1071:菲波那契數 時間限制: 1000 ms 內存限制: 65536 KB 提交數: 18129 通過數: 9498 【題目描述】 菲波那契數列是指這樣的數列: 數列的第一個和第二個數都為1,接下來每個數都等於前面2個數之和。給出一個正整數k,要求菲波那契數列中第k個數是多少。 【輸入】 輸入一行,包含一個正整數k。(1 ≤ k ≤ 46) 【輸出】 輸出一行,包含一個正整數,表示菲波那契數列中第k個數的大小。 【輸入樣例】 19 【輸出樣例】 41811071:菲波那契數
1159:斐波那契數列
時間限制: 1000 ms 內存限制: 65536 KB
提交數: 7019 通過數: 4962
【題目描述】
用遞歸函數輸出斐波那契數列第n項。0,1,1,2,3,5,8,13……
【輸入】
一個正整數n,表示第n項。
【輸出】
第n項是多少。
【輸入樣例】
3
【輸出樣例】
1
1159:斐波那契數列
1188:菲波那契數列(2) 時間限制: 1000 ms 內存限制: 65536 KB 提交數: 8702 通過數: 3136 【題目描述】 菲波那契數列是指這樣的數列: 數列的第一個和第二個數都為1,接下來每個數都等於前面2個數之和。 給出一個正整數a,要求菲波那契數列中第a個數對1000取模的結果是多少。 【輸入】 第1行是測試數據的組數n,後面跟著n行輸入。每組測試數據占1行,包括一個正整數a(1 ≤ a ≤ 1000000)。 【輸出】 n行,每行輸出對應一個輸入。輸出應是一個正整數,為菲波那契數列中第a個數對1000取模得到的結果。 【輸入樣例】 4 5 2 19 1 【輸出樣例】 5 1 181 11188:菲波那契數列
1201:菲波那契數列 時間限制: 1000 ms 內存限制: 65536 KB 提交數: 5051 通過數: 3014 【題目描述】 菲波那契數列是指這樣的數列: 數列的第一個和第二個數都為1,接下來每個數都等於前面2個數之和。 給出一個正整數a,要求菲波那契數列中第a個數是多少。 【輸入】 第1行是測試數據的組數n,後面跟著n行輸入。每組測試數據占1行,包括一個正整數a(1≤a≤20)。 【輸出】 輸出有n行,每行輸出對應一個輸入。輸出應是一個正整數,為菲波那契數列中第a個數的大小。 【輸入樣例】 4 5 2 19 1 【輸出樣例】 5 1 4181 11201:菲波那契數列
1642: 【例 2】Fibonacci 第 n 項
時間限制: 1000 ms 內存限制: 524288 KB
提交數: 75 通過數: 22
【題目描述】
大家都知道 Fibonacci 數列吧,f1=1,f2=1,f3=2,f4=3,…,fn=fn−1+fn−2f1=1,f2=1,f3=2,f4=3,…,fn=fn−1+fn−2 。
現在問題很簡單,輸入 nn 和 mm,求 fnmodmfnmodm。
【輸入】
輸入 n,mn,m。
【輸出】
輸出 fnmodmfnmodm。
【輸入樣例】
5 1000
【輸出樣例】
5
【提示】
數據範圍與提示:
對於 100% 的數據, 1≤n≤2×109,1≤m≤109+10。
1642: 【例 2】Fibonacci 第 n 項
1643:【例 3】Fibonacci 前 n 項和
時間限制: 1000 ms 內存限制: 524288 KB
提交數: 34 通過數: 22
【題目描述】
大家都知道 Fibonacci 數列吧,f1=1,f2=1,f3=2,f4=3,…,fn=fn−1+fn−2f1=1,f2=1,f3=2,f4=3,…,fn=fn−1+fn−2 。
現在問題很簡單,輸入 nn 和 mm,求 {fn}{fn} 的前 nn 項和 SnmodmSnmodm。
【輸入】
輸入 n,mn,m。
【輸出】
輸出前 nn 項和 SnmodmSnmodm。
【輸入樣例】
5 1000
【輸出樣例】
12
【提示】
數據範圍與提示:
對於 100% 的數據, 1≤n≤2×109,1≤m≤109+10。
1643:【例 3】Fibonacci 前 n 項和
1644:【例 4】佳佳的 Fibonacci
時間限制: 1000 ms 內存限制: 524288 KB
提交數: 28 通過數: 13
【題目描述】
佳佳對數學,尤其對數列十分感興趣。在研究完 Fibonacci 數列後,他創造出許多稀奇古怪的數列。例如用 S(n)S(n) 表示 Fibonacci 前 nn 項和 modmmodm 的值,即 S(n)=(F1+F2+...+Fn)modmS(n)=(F1+F2+...+Fn)modm,其中 F1=F2=1,Fi=Fi−1+Fi−2F1=F2=1,Fi=Fi−1+Fi−2 。可這對佳佳來說還是小菜一碟。
終於,她找到了一個自己解決不了的問題。用 T(n)=(F1+2F2+3F3+...+nFn)modmT(n)=(F1+2F2+3F3+...+nFn)modm 表示 Fibonacci 數列前 nn 項變形後的和 modmmodm 的值。
現在佳佳告訴你了一個 nn 和 mm,請求出 T(n)T(n) 的值。
【輸入】
輸入數據包括一行,兩個用空格隔開的整數 n,mn,m。
【輸出】
僅一行,T(n)T(n) 的值。
【輸入樣例】
5 5
【輸出樣例】
1
【提示】
樣例解釋
T(5)=(1+2×1+3×2+4×3+5×5)mod5=1T(5)=(1+2×1+3×2+4×3+5×5)mod5=1
數據範圍與提示:
對於 30% 的數據,1≤n≤1000;
對於 60% 的數據,1≤m≤1000;
對於 100% 的數據,1≤n,m≤231−1
1644:【例 4】佳佳的 Fibonacci
1645:Fibonacci
時間限制: 1000 ms 內存限制: 524288 KB
提交數: 35 通過數: 24
【題目描述】
原題來自:POJ 3070
我們知道斐波那契數列 F0=0,F1=1,Fn=Fn−1+Fn−2。
求 Fnmod104 。
【輸入】
多組數據,每組數據一行,一個整數 nn。
輸入以 −1−1 結束。
【輸出】
對於每組數據,輸出 Fnmod104 。
【輸入樣例】
0
9
999999999
1000000000
-1
【輸出樣例】
0
34
626
6875
【提示】
數據範圍與提示:
對於全部數據,0≤n≤109
1645:Fibonacci
己解決部分程序代碼
#include<iostream> using namespace std; int main(){ int k,a[50]; cin>>k; a[1]=1,a[2]=1; for(int i=3;i<=k;i++) a[i]=a[i-1]+a[i-2]; cout<<a[k]; return 0; }1071
#include<iostream> using namespace std; int fblq(int n) { if(n==1)return 0; if(n==2)return 1; return fblq(n-1)+fblq(n-2); } int main(){ int n; cin>>n; cout<<fblq(n); return 0; }1159
#include<iostream> using namespace std; int a[1000001],b[100]; int main(){ int n,max=0; cin>>n; for(int i=1;i<=n;i++) { cin>>b[i]; if(b[i]>max)max=b[i]; } a[1]=a[2]=1; for(int i=3;i<=max;i++) a[i]=(a[i-1]+a[i-2])%1000; for(int i=1;i<=n;i++)cout<<a[b[i]]<<‘\n‘; return 0; }1188
#include<iostream> using namespace std; int a[21],b[10000]; int main() { int n,max=0; cin>>n; for(int i=1;i<=n;i++) { cin>>b[i]; if(max<b[i])max=b[i]; } a[1]=1,a[2]=1; for(int i=3;i<=max;i++)a[i]=a[i-1]+a[i-2]; for(int i=1;i<=n;i++)cout<<a[b[i]]<<endl; return 0; }1201
#include<iostream> using namespace std; long long const mxn=20000011; long long n,m,a[mxn]; long long fb(long long n) { if(n==1||n==2)return 1; if(n>=mxn){ long long t1=fb(n/2)%m,t2; if(n%2)t2=fb(n/2+1)%m,t1=(t1*t1+t2*t2)%m; else t2=fb(n/2-1),t1=(t1*t1+2*t1*t2)%m; return t1; } else { if(a[n]==0) { long long t1=fb(n/2)%m,t2; if(n%2)t2=fb(n/2+1)%m,a[n]=(t1*t1+t2*t2)%m; else t2=fb(n/2-1),a[n]=(t1*t1+2*t1*t2)%m; } return a[n]; } } int main() { cin>>n>>m; cout<<fb(n); return 0; }1642
關於"斐波那契數列"你能做到哪一步?