斐波那契数列

小菜GG 2019-01-23 12:16:38


不知道是哪里出了问题,求解
#include<iostream>
using namespace std;
int main()
{
int a[61];
int sum = 2, n, m, k, m1, k1, s;
a[1] = 1;
a[2] = 1;
for (int i = 3; i <= 60; i++) {
a[i] = (a[i - 1] + a[i - 2]) % 10;
sum += a[i];
}
cin >> n;
while (n--)
{
cin >> m >> k;
m1 = m % 60;
k1 = k % 60;
if (m1 == 0)m1 = 60;
if (k1 == 0)k1 = 60;
s = 0;
if (k - m >= 60) {
for (int i = m1; i <= 60; i++)
{
s += a[i];
}
for (int i = 1; i <= k1; i++)
{
s += a[i];
}
s += ((k - m) / 60 - 1) * sum;
}
else {
if (k1 >= m1) {
for (int i = m1; i <= k1; i++)
{
s += a[i];
}
}
else {
for (int i = m1; i <= 60; i++)
{
s += a[i];
}
for (int i = 1; i <= k1; i++)
{
s += a[i];
}
}
}
cout << s << endl;
}
}
...全文
499 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
小菜GG 2019-01-24
  • 打赏
  • 举报
回复
引用 1 楼 赵4老师 的回复:
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。
不好意思啊,第一次问,没有注意到,抱歉抱歉
小菜GG 2019-01-24
  • 打赏
  • 举报
回复
引用 4 楼 chenxiaohui318 的回复:
准确点讲,k-m>60,k1<m1时,应该少加了个sum
谢谢,已经解决完了
大苟姬 2019-01-23
  • 打赏
  • 举报
回复
准确点讲,k-m>60,k1<m1时,应该少加了个sum
大苟姬 2019-01-23
  • 打赏
  • 举报
回复
k-m>=60时,如果m%60=0会有问题,比如k=121,m=60,计算的k1=1,m1=60,只会计算a[60]和a[1]吧
lin5161678 2019-01-23
  • 打赏
  • 举报
回复
直接暴力是不行的
会抄时
不进位的十进制斐波那契数列
周期
引用
1 1 2 3 5 8 3 1 4 5 9 4 3 7 0 7
7 4 1 5 6 1 7 8 5 3 8 1 9 0 9 9
8 7 5 2 7 9 6 5 1 6 7 3 0 3 3 6
9 5 4 9 3 2 5 7 2 9 1 0

计算从一个周期的哪个位置开始 一共几个周期 在周期的哪个位置结束
就能算出结果了
赵4老师 2019-01-23
  • 打赏
  • 举报
回复
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧