P2626 斐波那契数列(升级版)
生活随笔
收集整理的這篇文章主要介紹了
P2626 斐波那契数列(升级版)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目背景
大家都知道,斐波那契數列是滿足如下性質的一個數列: ? f(1) = 1 ? f(2) = 1 ? f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 為整數)。
題目描述
請你求出第n個斐波那契數列的數mod(或%)2^31之后的值。并把它分解質因數。
輸入輸出格式
輸入格式:
?
n
?
輸出格式:
?
把第n個斐波那契數列的數分解質因數。
?
輸入輸出樣例
輸入樣例#1:?復制 5 輸出樣例#1:?復制 5=5 輸入樣例#2:?復制 6 輸出樣例#2:?復制 8=2*2*2說明
n<=48
?
嗯,這道題沒有那么那么那么的數學化了。
?
?
看題目,那就分成三塊:
1、斐波那契求第n個數;
2、這個數%2^31(useless);
3、將這個數分解成幾個質數的乘積(the most important I think)。
?
第三步我用的dfs。
?
1 #include<iostream> 2 #include<cstdio> 3 #include<cmath> 4 #include<algorithm> 5 using namespace std; 6 int n; 7 bool b; 8 long long f[52]; 9 long long xx(int x,int y) //為了求2^31,但實際好像沒什么用。 10 { 11 long long a=1; 12 for(int i=1;i<=y;++i) 13 a*=x; 14 return a; 15 } 16 void dfs(int x,int y) //分解x,y為x的除1以外的最小的質因數。 17 { 18 if(x<y) return ; 19 for(int i=y;i<=x;++i) 20 if(!(x%i)) //如果能整除 21 { 22 if(b) printf("*"); 23 else b=1; 24 printf("%d",i); //輸出這個因數 25 dfs(x/i,i); //因為是分解成因數的乘積,已經輸出一個因數了, 26 //所以以后要分解的數就變成了x/i; 27 return ; 28 } 29 } 30 int main() 31 { 32 scanf("%d",&n); 33 f[1]=1; 34 f[2]=1; 35 for(int i=3;i<=n;++i) //斐波那契 36 f[i]=f[i-1]+f[i-2]; 37 f[n]=f[n]%xx(2,31); 38 printf("%d=",f[n]); 39 dfs(f[n],2); //1不是質數,從2開始篩 40 return 0; 41 }?
另:
我感覺不是lxl人格分裂,,是我人格分裂。
我好想你,好想我媽,我媽真的很好很好很好,她是世界上最好的人。
希望你們一切都好。
告訴我吧,別再沉默如迷。
如果你不開心,那我就把右邊這個帥傻子分享給你吧,?
你看,他這么好看,那么深情的望著你,你還傷心嗎??
真的!這照片盯上他五秒鐘就想笑了。?
一切都會過去的。
?轉載于:https://www.cnblogs.com/Mary-Sue/p/8799159.html
總結
以上是生活随笔為你收集整理的P2626 斐波那契数列(升级版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JAVA框架Struts2 结果页配置
- 下一篇: string数组批量转换成Int数组