华师一附中OI组
标题:
P2626 斐波那契数列(升级版)
[打印本页]
作者:
admin
时间:
2018-7-14 10:26
标题:
P2626 斐波那契数列(升级版)
题目背景
大家都知道,斐波那契数列是满足如下性质的一个数列:
f(1) = 1
f(2) = 1
f(n) = f(n-1) + f(n-2)) ( n>2 且 n 为整数)。
题目描述
请你求出第 nn 个斐波那契数列的数mod(或%) 2^31之后的值。并把它分解质因数。
输入输出格式
输入格式:
n
输出格式:
把第 n 个斐波那契数列的数分解质因数。
输入输出样例
输入样例#1:
5
输出样例#1:
5=5
输入样例#2:
6
输出样例#2:
8=2*2*2
说明
n≤48
作者:
universehyf
时间:
2018-9-14 15:56
#include<iostream>
#include<cmath>
using namespace std;
long long n,t=2;
long long s=2;
long long f[50];
bool b;
bool ss(int xx)
{
if(xx<2) return false;
for(long long i=2;i<=sqrt(xx);i++)
if(xx%i==0) return false;
return true;
}
void fj(int x)
{
if(x==1) return;
if(ss(x)){if(b) cout<<"*";else b=true;cout<<x;return;}
long long sqr=sqrt(x);
for(long long i=t;i<=sqr;i++)
if(ss(i)&&(x%i==0))
{
if(b) cout<<"*";
else b=true;
cout<<i;
t=i;
fj(x/i);
return;
}
}
int main()
{
cin>>n;
for(int i=2;i<=31;i++)
s=s*2;
f[1]=1;f[2]=1;
for(int i=3;i<=n;i++)
f[i]=(f[i-1]+f[i-2])%s;
cout<<f[n]<<"=";
fj(f[n]);
if(!b) cout<<f[n];
return 0;
}
复制代码
欢迎光临 华师一附中OI组 (http://hsyit.cn/)
Powered by Discuz! X3.2