题目背景
大家都知道,斐波那契数列是满足如下性质的一个数列: • 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 #include<cstdio> 2 #define LL long long 3 const LL mod=2147483648ll; 4 LL n,a,ans; 5 LL f[50]={1,1}; 6 int s[10000],ss; 7 bool v[10000000],p; 8 int main(){ 9 scanf("%d",&n); 10 for(int i=2;i<n;i++) f[i]=(f[i-1]+f[i-2])%mod; 11 ans=f[n-1]; 12 printf("%d=",ans); 13 if(ans==1) putchar('1'); 14 for(LL i=2;i<=ans;i++) 15 while(ans%i==0){ 16 if(p) putchar('*'); 17 else p=1; 18 printf("%d",i); 19 ans/=i; 20 } 21 putchar(' '); 22 return 0; 23 }
题目来源:洛谷