题目背景
大家都知道,斐波那契数列是满足如下性质的一个数列: • 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
题解:质因数分解
代码:
#include<iostream> #include<cstdio> #include<cmath> #include<cstring> using namespace std; int n,cnt,flag; long long f[55]; long long mod; int chai(long long x){ for(long long i=2;i*i<=x;i++){ if(x%i==0){ while(x%i==0){ if(flag) printf("*%d",i); else { flag=true; printf("%d",i); } x/=i; } } } if(x>1){ if(flag)printf("*%d",x); else printf("%d",x); } } int main(){ scanf("%d",&n); f[1]=f[2]=1;mod=pow(2,31); for(int i=3;i<=n;i++){ f[i]=(f[i-1]%mod+f[i-2]%mod)%mod; } printf("%d=",f[n]); chai(f[n]); return 0; }