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

题目背景

大家都知道,斐波那契数列是满足如下性质的一个数列: • 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;
}
原文地址:https://www.cnblogs.com/zzyh/p/7670954.html