这道题,大家一定要注意:

要对2^31取模 ! ( 本蒟蒻开始没注意到这一点,WA了 )

(不过大家在试样例的时候,试试47,出不了结果,就说明你没模2^31)

总体来说,这道题考查的知识点就两个:

① 斐波那契递推公式 ( a[n]=a[n-1]+a[n-2] )

② 分解质因数 ( 不要跟因式分解混淆了 )

首先,让我们来看一看斐波那契递推公式:

const long long x=pow(2,31);//2^31
a[1]=1;
a[2]=1;
for(i=3;i<=n;i++)
    a[i]=(a[i-1]+a[i-2])%x;//long long a[49],i;

很简单吧!(只要记得公式就好办了)

其次,让我们看一看分解质因数:

for(i=2;a[n]>1;i++){
    if(a[n]%i==0){//i是a[n]的因数
        a[n]/=i;//记得要除
        printf("%lld",i);
        break;//先处理没有乘号的地方
    }
}
for(j=i;a[n]>1;j++){
    if(a[n]%j==0){//j是a[n]的因数
        printf("*%lld",j);
        a[n]/=j;//这里也是
        while(a[n]%j==0){
            printf("*%lld",j);
            a[n]/=j;//还有这里
        }
        if(a[n]==1)//特判
            return 0;//若a[n]为0则分解完毕,退出
    }
}

只是要注意等号后面第一个不能输出乘号,得重复走两遍

贴出完整代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;//自定义
const long long x=pow(2,31);//pow(a,b)为计算a^b
ll i,n,j,a[51];//ll是自己定义的
int main(){
    scanf("%lld",&n);
    a[1]=1;
    a[2]=1;
    for(i=3;i<=n;i++)
        a[i]=(a[i-1]+a[i-2])%x;//递推走起
    printf("%lld=",a[n]);
    for(i=2;a[n]>1;i++){
        if(a[n]%i==0){
            a[n]/=i;
            printf("%lld",i);
            break;
        }
    }
    for(j=i;a[n]>1;j++){
        if(a[n]%j==0){
            printf("*%lld",j);
            a[n]/=j;
            while(a[n]%j==0){
                printf("*%lld",j);
                a[n]/=j;
            }
            if(a[n]==1)
                return 0;
        }
    }//分解质因数
    if(n==1||n==2)
        printf("1");//不特判n=1和n=2时就无法输出
    return 0;
}

洛谷加油!OI冲鸭!

题解 P2626 【斐波那契数列(升级版)】的更多相关文章

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

    P2626 斐波那契数列(升级版) 题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ ...

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

    题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数). 题目描述 ...

  3. [洛谷P2626]斐波那契数列(升级版)

    题目大意:请你求出第$n$个斐波那契数列的数$mod 2^{31}$之后的值.并把它分解质因数. 题解:乱搞 卡点:1.忘记取模 C++ Code: #include<cstdio> #i ...

  4. [NOIP1997] P2626 斐波那契数列(升级版)

    题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数). 题目描述 ...

  5. P2626 斐波那契数列(升级版)(合数的质数分解, 大数为素数的概率十分小的利用)

    题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: f(1)=1f(1) = 1 f(1)=1 f(2)=1f(2) = 1f(2)=1 f(n)=f(n−1)+f(n−2)f(n) = f ...

  6. 洛谷——P2626 斐波那契数列(升级版)矩阵

    题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数). 题目描述 ...

  7. P2626 斐波那契数列(升级版)

    题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数). 题目描述 ...

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

    https://www.luogu.org/problem/show?pid=2626 题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f ...

  9. LintCode题解之斐波纳契数列

    直接使用递归的方法会导致TLE,加个缓存就好了: public class Solution { private Integer[] buff = new Integer[1000]; /* * @p ...

  10. HDU 5914 Triangle 斐波纳契数列 && 二进制切金条

    HDU5914 题目链接 题意:有n根长度从1到n的木棒,问最少拿走多少根,使得剩下的木棒无论怎样都不能构成三角形. 题解:斐波纳契数列,a+b=c恰好不能构成三角形,暴力就好,推一下也可以. #in ...

随机推荐

  1. [Xcode 实际操作]三、视图控制器-(6)UINavigationController导航栏样式

    目录:[Swift]Xcode实际操作 本文将演示对导航栏进行样式设置,以及更改导航顶部的提示区. 选择编辑第一个视图控制器文件. import UIKit class FirstSubViewCon ...

  2. 在谷歌地图上绘制行政区域轮廓【结合高德地图的API】

    实现思路: 1.利用高德地图行政区域API获得坐标列表 2.将坐标列表绘制在谷歌地图上[因为高德地图和国内的谷歌地图都是采用GCJ02坐标系,所有误差很小,可以不进行坐标误差转换] 注意点: 1.用百 ...

  3. Java基础笔记(七)—— 成员变量、静态变量、局部变量

    public class Test { int c; //成员变量(实例变量) static int s1; //静态变量(类变量)(全局变量) public static void main(Str ...

  4. 安装php过程中的错误和解决方式 configure: error: jpeglib.h not found

    centos6.5 32位系统: checking for the location of libpng... yeschecking for the location of libXpm... no ...

  5. AngularJs页面跳转

    同一页面之间的跳转: $state.go('station.booking'); 打开新页面的跳转方式: var url = $state.href("knowledge.questiond ...

  6. Scala_Load csv data to hive via spark2.1

    code: package com.liupu import org.apache.spark.{ SparkContext, SparkConf } import org.apache.spark. ...

  7. VS文档自动生成

    VS2008文档自动生成 (发现,Sandcastle主要是用于C#项目.里面的注释都是XML格式的.不太适合VC的.最终还是得用Doxygen) 一.Sandcastle简介: Sandcastle ...

  8. Java NIO基本使用介绍

    NIO主要包括Channel,Buffer,Selector三个核心元素组成. Channel即通道,l和Buffer有好几种类型.下面是JAVA NIO中的一些主要Channel的实现: FileC ...

  9. 在Pycharm中写python代码时光标变粗

    在练习写python代码时,不小心摁了Insert键,结果光标变粗. 如下图所示: 原因: 和word一样,在编辑文本或代码时,有两种模式:改写和插入模式. 当我们在编辑文章或者是代码时,应该将模式设 ...

  10. Linux与DOS的常用命令比较

    命令类型 DOS Linux DOS示例 Linux示例 复制文件   copy cp copy c:\teacher1\file1 d:\tmp cp /home/teacher1/file1 /t ...