题目背景
大家都知道,斐波那契数列是满足如下性质的一个数列: • 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
做法:其实先求出斐波那契数列后将n分解质因数就好了
代码如下:
#include<cstdio>
using namespace std;
int i,j,n;
long long a[49];
int main()
{
scanf("%d",&n);
a[1]=a[2]=1;
for (i=3;i<=n;i++)
a[i]=(a[i-1]+a[i-2])%2147483648;
a[n]%=2147483648;
printf("%d=",a[n]);
for (i=2;i<=a[n];i++)
if (a[n]%i==0)
{
printf("%d",i);
a[n]=a[n]/i;
break;
}
while (a[n]!=1)
{
for (i=2;i<=a[n];i++)
if (a[n]%i==0)
{
printf("*%d",i);
a[n]=a[n]/i;
break;
}
}
}