题解 P2626 【斐波那契数列(升级版)】
这道题,大家一定要注意:
要对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 【斐波那契数列(升级版)】的更多相关文章
- 洛谷——P2626 斐波那契数列(升级版)
P2626 斐波那契数列(升级版) 题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ ...
- 洛谷 P2626 斐波那契数列(升级版)
题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数). 题目描述 ...
- [洛谷P2626]斐波那契数列(升级版)
题目大意:请你求出第$n$个斐波那契数列的数$mod 2^{31}$之后的值.并把它分解质因数. 题解:乱搞 卡点:1.忘记取模 C++ Code: #include<cstdio> #i ...
- [NOIP1997] P2626 斐波那契数列(升级版)
题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数). 题目描述 ...
- 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 ...
- 洛谷——P2626 斐波那契数列(升级版)矩阵
题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数). 题目描述 ...
- P2626 斐波那契数列(升级版)
题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f(n) = f(n-1) + f(n-2) (n ≥ 2 且 n 为整数). 题目描述 ...
- P2626 斐波那契数列(升级版) 洛谷(2626)
https://www.luogu.org/problem/show?pid=2626 题目背景 大家都知道,斐波那契数列是满足如下性质的一个数列: • f(1) = 1 • f(2) = 1 • f ...
- LintCode题解之斐波纳契数列
直接使用递归的方法会导致TLE,加个缓存就好了: public class Solution { private Integer[] buff = new Integer[1000]; /* * @p ...
- HDU 5914 Triangle 斐波纳契数列 && 二进制切金条
HDU5914 题目链接 题意:有n根长度从1到n的木棒,问最少拿走多少根,使得剩下的木棒无论怎样都不能构成三角形. 题解:斐波纳契数列,a+b=c恰好不能构成三角形,暴力就好,推一下也可以. #in ...
随机推荐
- 源代码实现一个binary例子
一.源代码实现一个binary例子 1.例子描述 (1) 数据描述 输入数据X是二进制的一串序列, 在t时刻,有50%的概率是1,50%的概率是0,比如:X=[1,1,0,0,1,0.....]输出数 ...
- ios一个自定义的下拉多选菜单
前段时间项目刚好要做到条件筛选菜单,正好找到一些别人写的,结合自己实际需求进行优化修改,一个实用的多条件筛选菜单,根据其他的下拉进行一些改进. 点击后返回点击文字显示 github地址:https:/ ...
- Mysql常见问题集锦
缺少libstdc++.so.6库的原因及解决办法 https://blog.csdn.net/u010417185/article/details/69951312 https://www.cnbl ...
- 在邮箱服务器上执行Powershell命令Get-MessageTrackingLog 报错
开启对应的服务即可. 中文环境: 英文环境:
- C# AD 验证登陆
using System.DirectoryServices; using System.DirectoryServices.AccountManagement; using (DirectoryEn ...
- 自定义ClassLoader加载加密的class文件
package com.yd.wmsc.util; public class Test { public void say(){ System.out.println("Say Hello& ...
- 使用nsenter工具进入Docker容器
查看本机装没有nsenter whereis nsenter或者whatis nsenter 未安装先安装,网上有很多这样的脚本 vi nsenter.sh #!/bin/bashcurl https ...
- 10-----关于DOM的时间操作
一.JavaScript的组成 JavaScript基础分为三个部分: ECMAScript:JavaScript的语法标准.包括变量.表达式.运算符.函数.if语句.for语句等. DOM:文档对象 ...
- HDU 4143 A Simple Problem 分解因式
求一个最小的正整数x,使得(y + x) (y - x) = n成立 考虑一下n的分解因式. 可能会想到枚举n的约数,那么a * b = n成立,取最小的x即可 但是要枚举到n / 2,这样会超时. ...
- C# Thread类 线程优先级
1.C#对线程进行操作时,通过Thread类,可以对线程进行创建.挂起.恢复.休眠.终止及设置优先级. Thread类位于System.Threading命名空间下,该命名空间还包含一个ThreadP ...