博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2834 斐波那契数
阅读量:5797 次
发布时间:2019-06-18

本文共 1100 字,大约阅读时间需要 3 分钟。

2834 斐波那契数

 

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 黄金 Gold
 查看运行结果
 
 
题目描述 
Description

小X是个聪明的孩子,他记得斐波那契数列f(n)中前1000个数。不过由于学业的压力,他无法记得每一个数在数列中的位置。

他现在知道斐波那契数列中的一个数f(x)模P后的值N(即f(x) mod P=N)以及x可能的最大值M,如果再对于斐波那契数列中每一个数都模P,他想知道这个数可能出现在第几个。不过小X还要做作业呢,这个问题就交给你由编程来解决了。

输入描述 
Input Description

一行,共3个整数,第一个数为N,第二个数为P,第三个数为x可能的最大值M,三个数以空格隔开。

输出描述 
Output Description

一个整数,满足f(i) mod P = N的最小的i,如果不存在则输出-1。

样例输入 
Sample Input

3 7 5

样例输出 
Sample Output

4

数据范围及提示 
Data Size & Hint

对于20%的数据,保证0<M≤50

对于50%的数据,保证0<M≤100

对于70%的数据,保证0<M≤500

对于100%的数据,保证0<M≤1000,0≤N<P,P为素数且2<P<105。

分类标签 Tags 

 分析

题意:求一个斐波那契数,使之满足 f[i]%p==n(m是要求的f[i]的数据范围)输出 i(他在序列的位置)

代码

#include
#include
#include
using namespace std;int f[10110]={
0,1,1},n,p,m;int main(){ scanf("%d%d%d",&n,&p,&m); if(n==0||n==1){printf("%d\n",f[n]);return 0;} for(int i=2;i<=m;i++){ f[i]=(f[i-1]%p+f[i-2]%p)%p;//同余与模算术 if(f[i]%p==n){printf("%d\n",i);return 0;} } printf("-1\n"); return 0;}

 

转载于:https://www.cnblogs.com/shenben/p/5539038.html

你可能感兴趣的文章
Android实例-录音与回放(播放MP3)(XE8+小米2)
查看>>
构建自己的PHP框架--抽象Controller的基类
查看>>
CSS——(2)与标准流盒模型
查看>>
MYSQL 基本SQL语句
查看>>
Codeforces 451E Devu and Flowers(容斥原理)
查看>>
P2P行业专业术语(最全)
查看>>
C#中的Marshal
查看>>
网站发的文章有收录 但是没有排名怎么处理
查看>>
linux命令:ls
查看>>
Using RequireJS in AngularJS Applications
查看>>
hdu 2444(二分图最大匹配)
查看>>
shell编程笔记六:实现ll命令
查看>>
【SAP HANA】关于SAP HANA中带层次结构的计算视图Cacultation View创建、激活状况下在系统中生成对象的研究...
查看>>
[nodejs] nodejs开发个人博客(五)分配数据
查看>>
《Linux内核修炼之道》 之 高效学习Linux内核
查看>>
Java数据持久层框架 MyBatis之API学习九(SQL语句构建器详解)
查看>>
30分钟Git命令“从入门到放弃”
查看>>
nginx : TCP代理和负载均衡的stream模块
查看>>
MYSQL数据库间同步数据
查看>>
DevOps 前世今生 | mPaaS 线上直播 CodeHub #1 回顾
查看>>