标签:int 输入输出 优化 ace printf getc long style har
大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数)。
请你求出第n个斐波那契数列的数mod(或%)2^31之后的值。并把它分解质因数。
输入格式:
n
输出格式:
把第n个斐波那契数列的数分解质因数。
5
5=5
6
8=2*2*2
n<=48
代码
#include<cmath> #include<cstdio> #include<cstdlib> #include<iostream> #include<algorithm> using namespace std; int read() { int x=0,f=1; char ch=getchar(); while(ch<‘0‘||ch>‘9‘) { if(ch==‘-‘) f=-1; ch=getchar(); } while(ch>=‘0‘&&ch<=‘9‘) { x=x*10+ch-‘0‘; ch=getchar(); } return f*x; }//读入优化 int main() { int p=pow(2,31); int n=read(); double x=sqrt(5.0); long long s=(pow(((1+x)/2),n)/x-pow(((1-x)/2),n)/x);//斐波那契数列通项公式 s=s%p;//取模运算 printf("%lld=",s); long long sum=0; int m=2; while(s!=1) { if(s%m) m++; else { sum++; if(sum==1) printf("%d",m); else printf("*%d",m); s/=m; } }//分解质因数 return 0; }
标签:int 输入输出 优化 ace printf getc long style har
原文地址:http://www.cnblogs.com/z360/p/6679883.html