P2626 斐波那契数列(升级版) 洛谷(2626)

https://www.luogu.org/problem/show?pid=2626

题目背景

大家都知道,斐波那契数列是满足如下性质的一个数列: • 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 <algorithm>
 2 #include <iostream>
 3 #include <cmath>
 4 
 5 const long long mod=pow(2,31);
 6 
 7 using namespace std;
 8 
 9 long long x,num=2,cnt,n;
10 
11 int main()
12 {
13     cin>>n;
14     double x=sqrt(5.0);
15     cnt=1/x*((pow((1+x)/2,n)-(pow((1-x)/2,n))));
16     cnt%=mod;
17     long long zz=cnt;
18     cout<<cnt<<'=';
19     while(cnt!=1)
20     {
21         while(cnt%num==0)
22         {
23             if(cnt<zz) cout<<'*'<<num;
24             else     cout<<num;
25             cnt/=num;
26         }
27         num++;
28     }
29     return 0;
30 }

 

posted @ 2017-04-06 21:25  Aptal丶  阅读(407)  评论(0编辑  收藏  举报