小麦亩产一千八(kela)小麦亩产一千八(kela) 小麦亩产一千八(kela)

题目链接:jzoj3461jzoj\ 3461jzoj 3461

题目

“有了金坷垃,肥料一袋能顶两袋撒,小麦亩产一千八,吸收两米下的氮磷钾……”,话说HYSBZ(HengyangSchoolforBoys&Zy)HYSBZ(Hengyang\ School\ for\ Boys\ \&\ Zy)HYSBZ(Hengyang School for Boys & Zy)学识渊博孩纸们一讲到粮食,都会想起印度那个著名的故事:国王要在第一个格子里放入一粒小麦,接下来的格子放入前面一个格子的两倍的小麦。这样所需小麦总数是巨大的,哪是不用金坷垃就能完成的任务?不过为了减轻国王的任务,那个下棋获胜的宰相换了一个要求:“我只需要你在棋盘外放一粒小麦,可以将其理解为第 000 个格子,然后你需要在第一个格子里放入 ppp 粒小麦,之后每一个格子放入前两个格子的小麦数之和的小麦,并且要满足第 aaa 个格子放 xxx 粒小麦,第 bbb 个格子放……”说到这,宰相突然发现自己说的满足第 aaa 个格子放 xxx 粒小麦的情况可能不存在……欺君可是大罪啊!国王看到宰相迟迟不说,自己也烦了!我自己来算!于是国王拜托你,让你算出第 bbb 个格子应该放几粒小麦。当然,就算答案不存在,你也是要告诉国王的。

输入

该题有多组数据,请读到文件末结束。

对于每一组数据仅一行,333 个正整数aaa , xxx , bbb ,分别表示第 aaa 个格子放了 xxx 粒小麦,以及你所需要计算的是第 bbb 个格子的小麦数量。

输出

对于每一次询问,仅 111 个整数,为第 bbb 个格子的小麦数量,若宰相说的情况不存在,那么请输出−1-1−1。

样例输入

1 1 23 5 43 4 612 17801 19

样例输出

28-1516847

样例解释

对于样例二,f[1]=2f[1]=2f[1]=2 时,能够满足f[3]=5f[3]=5f[3]=5,因此宰相没有撒谎,此时第 555 个格子的小麦数应为f[4]=f[2]+f[3]=3+5=8.f[4]=f[2]+f[3]=3+5=8.f[4]=f[2]+f[3]=3+5=8.

数据范围

对于50%50\%50%的数据:如果答案存在,那么p<=50p<=50p<=50

对于100%100\%100%的数据:1<=1<=1<=数据组数<=10000<=10000<=10000,1<=a,b<=201<=a,b<=201<=a,b<=20, 数据保证如果答案存在,那么1<=p<=1000000.1<=p<=1000000.1<=p<=1000000.

思路

这道题其实㐊一道变了形的斐波那切数列。

设f[i]f[i]f[i]为第iii个格子应该放的数量,那我们简单模拟一下:
f[0]=1f[0] = 1f[0]=1
f[1]=pf[1] = pf[1]=p
f[2]=f[0]+f[1]=1+pf[2] = f[0] + f[1] = 1 + pf[2]=f[0]+f[1]=1+p
f[3]=f[1]+f[2]=p+(1+p)=1+2∗pf[3] = f[1] + f[2] = p + (1 + p) = 1 + 2 * pf[3]=f[1]+f[2]=p+(1+p)=1+2∗p
f[4]=f[2]+f[3]=(1+p)+(1+2∗p)=2+3∗pf[4] = f[2] + f[3] = (1 + p) + (1 + 2 * p) = 2 + 3 * pf[4]=f[2]+f[3]=(1+p)+(1+2∗p)=2+3∗p
f[5]=f[3]+f[4]=(1+2∗p)+(2+3∗p)=3+5∗pf[5] = f[3] + f[4] = (1 + 2 * p) + (2 + 3 * p) = 3 + 5 * pf[5]=f[3]+f[4]=(1+2∗p)+(2+3∗p)=3+5∗p
那我们又发现,设fb[i]fb[i]fb[i]原来的斐波那契数列中的第iii个,式子为f[i]=j+k∗pf[i] = j + k * pf[i]=j+k∗p,则jjj其实是fb[i]fb[i]fb[i],kkk其实是fb[i+1]fb[i + 1]fb[i+1],那就可以得到这个:
f[i]=fb[i]+fb[i+1]∗p①f[i] = fb[i] + fb[i + 1] * p\ \ \ \ \ \ \ \ \ \ \ \ \ \ ①f[i]=fb[i]+fb[i+1]∗p              ①
简单移一下项,就可以得到这个:
p=(f[i]−fb[i])/fb[i+1]②p = (f[i] - fb[i])\ /\ fb[i + 1]\ \ \ \ \ \ \ \ \ \ \ \ \ \ ②p=(f[i]−fb[i]) / fb[i+1]              ②

那我们就可以先预处理原来的斐波那契数列,然后对于每一组数据,通过aaa与xxx套入公式②②②中求出ppp(如果ppp不是整数则没有解),然后用ppp和bbb代回公式①①①中,就可以求出答案了。

(注意,要用longlonglong\ longlong long)

代码

#include<cstdio>
#define ll long longusing namespace std;ll a, x, b, fb[21];int main() {fb[1] = 0;fb[2] = fb[3] = 1;//初始化for (int i = 4; i <= 21; i++)fb[i] = fb[i - 1] + fb[i - 2];//求出原来的斐波那契数列while (~scanf("%lld %lld %lld", &a, &x, &b)) {//读入ll p = (x - fb[a]) / fb[a + 1];//求出p值if ((x - fb[a]) % fb[a + 1]) printf("-1\n");//没有解else printf("%lld\n", fb[b + 1] * p + fb[b]);//有解直接算出答案}return 0;
}

小麦亩产一千八(kela)相关推荐

  1. JZOJ 3461. 【NOIP2013模拟联考5】小麦亩产一千八(kela)

    3461. [NOIP2013模拟联考5]小麦亩产一千八(kela) (Standard IO) Time Limits: 1000 ms  Memory Limits: 262144 KB  Det ...

  2. JZOJ3461【小麦亩产一千八(kela)】

    小麦亩产一千八(kela) 题目描述: "有了金坷垃,肥料一袋能顶两袋撒,小麦亩产一千八,吸收两米下的氮磷钾--",话说HYSBZ(Hengyang School for Boys ...

  3. 【NOIP2013模拟联考5】小麦亩产一千八(kela) (Standard IO)

    Description "有了金坷垃,肥料一袋能顶两袋撒,小麦亩产一千八,吸收两米下的氮磷钾--",话说HYSBZ(Hengyang School for Boys & Z ...

  4. 10.30纪中DAY2_小麦亩产一千八(kela) 休息(rest) 军训(training)

    noip2019-counting down three weeks 纪中day2 10.30纪中B组notes 小麦亩产一千八(kela)-_- 休息(rest) 军训(training) 题目来源 ...

  5. 小麦亩产一千八(jzoj 3461)

    小麦亩产一千八 jzoj 3461 题目大意 给你一个正整数序列:a0,a1,a2a_0,a_1,a_2a0​,a1​,a2​-- a0a_0a0​为1 a1a_1a1​为p ax=ax−1+ax−2 ...

  6. jzoj3461. 小麦亩产一千八 斐波拉契数列

    Time Limits: 1000 ms Memory Limits: 262144 KB Detailed Limits Description "有了金坷垃,肥料一袋能顶两袋撒,小麦亩产 ...

  7. [jzoj 3461]【NOIP2013模拟联考5】小麦亩产一千八 {Fibonacci数列}

    题目 Description "有了金坷垃,肥料一袋能顶两袋撒,小麦亩产一千八,吸收两米下的氮磷钾--",话说HYSBZ(Hengyang School for Boys & ...

  8. [Jzoj] 3461. 小麦亩产一千八

    题目描述 "有了金坷垃,肥料一袋能顶两袋撒,小麦亩产一千八,吸收两米下的氮磷钾--",话说HYSBZ学识渊博孩纸们一讲到粮食,都会想起印度那个著名的故事:国王要在第一个格子里放入一 ...

  9. JZOJ6月20日提高组T1 小麦亩产一千八

    JZOJ6月20日提高组T1 小麦亩产一千八 题目 Description Input Output Sample Input Data Constraint 分析 Code 题目 Descripti ...

  10. 【NOIP2013模拟联考5】小麦亩产一千八题解

    Description "有了金坷垃,肥料一袋能顶两袋撒,小麦亩产一千八,吸收两米下的氮磷钾--",话说HYSBZ(Hengyang School for Boys & Z ...

最新文章

  1. laravel carbon 格式化日期_Laravel 编码实践分享
  2. Eclipse JDBC SQLServer2008 R2
  3. unity 获得所有的tag_Unity3D_06_根据Transform、GameObject和Tag获取子对象集合
  4. uva 10163——Storage Keepers
  5. 【R】语言第三课----矩阵
  6. 搜索互联网缓存页面 How to View the Cached Page of any URL or Website
  7. 【Codeforces Round #317 Div1 —— A】Lengthening Sticks【数学思维题】
  8. Java商城项目实战
  9. 在AD中安装元件和封装库
  10. SolidWorks零件图转工程图
  11. 串口连接BBB(三)
  12. 为航空公司注入数字活力,腾讯助力祥鹏航空数字客舱圆满首航
  13. transforms操作
  14. 关于VS.NET中多个项目的工程相互引用和多个dll引用的问题! - antony--异域空间 - 博客园
  15. Bugku旧平台crypto writeup
  16. 数据挖掘——关联规则挖掘
  17. 重启数据库服务器后数据库无法连接的解决方法
  18. 两个进程同时访问同一个文件
  19. 操作系统真象还原实验记录之实验六:内存分页
  20. 追踪电脑或手机(已知目标IP或mac)进行物理定位

热门文章

  1. python如何求平方_python中求平方
  2. linux修改dns地址的三种方法
  3. Unity3D -- 天空盒(图文)
  4. 灵界的科学丨一、灵界在哪里?
  5. 深层和浅层卷积_浅层vs深层javascript
  6. 保留字符串中的大写字母(汇编语言)
  7. 假设有一个英文文本文件,编写一个程序读取其内容并将里面的大写字母变成小写字母,小写字母变成大写字母
  8. 模拟软件-OLED和Solar cell的模拟软件(Emison模块)-[Setfos]
  9. 如何制作一寸、二寸、六寸照片。以后不用再去照相馆了!!! 转~版本更新...
  10. iPS细胞移植最新进展