题目描述
小宇正在读小学,今天老师布置了几道数学题目。小宇平时上课经常不专心,这些他可发愁了,怎么办呢?看看你能不能帮帮他。
题目是给你一组有规律序列的前面5个整数,请你给出它后面跟着的5个整数,如:1,2,3,4,5,___,___,_,,___。这是个等差数列,后面应该是6,7,8,9,10,就这么简单。而且现在小宇已经知道这串序列要么是等差数列,要么是等比数列或者是斐波那契数列。
输入
输入包含多组测试数据。每组输入5个整数,每个数字之间隔一个空格,当5个数字都为0时输入结束。
输出
对于每组输入,输出这串数列的后面5个数字,每个数字之间隔一个空格。
样例输入 Copy
1 2 3 4 5
1 2 4 8 16
1 2 3 5 8
0 0 0 0 0
样例输出 Copy
6 7 8 9 10
32 64 128 256 512
13 21 34 55 89
条bug调了太久,代码没有完善就这样吧,通过就行,一直卡在斐波那契,输入2 3 5 8 13输出总是13 13 13 13 13,最后问题在等比数列那里,因为开始q设的是整型,比值就不精确了。。。。
思路是设标记位,不满足相应条件就置零,for循环出来一定只有一个是1,然后输出后5位
#include<iostream>
#include<algorithm>
using namespace std;
int main(){
float a[15];
while(1){
int dc=1,db=1,fb=1;
//int a[15];
for(int i = 0;i < 5;i++){
cin>>a[i];
}
if(a[0]==0&&a[4]==a[0]&&a[3]==0&&a[2]==0&&a[1]==0){
break;
}
float d;
float q;
for(int i = 1;i < 5;i++){
if(dc==1)
{ if(i==1){
d=a[i]-a[i-1];
}
else if(d!=a[i]-a[i-1]){
dc=0;
}
}
if(db==1){
if(i==1){
q=a[i]/a[i-1];
}
else if((q!=a[i]/a[i-1])){
db=0;
}
}
if(fb==1){
if(i>=2&&i<5){
if(a[i]!=(a[i-1]+a[i-2])){
fb=0;
}
}
}
}
int num;
if(dc==1){
num=a[4];
for(int i = 0;i < 5;i++){
num=num+d;
cout<<num;
if(i!=4){
cout<<" ";
}
}
cout<<endl;
//continue;
}
else if(db==1){
num=a[4];
for(int i = 0;i < 5;i++){
num=num*q;
cout<<num;
if(i!=4){
cout<<" ";
}
}
cout<<endl;
//continue;
}
else if(fb==1){
// cout<<a[5]<<" ";
for(int i = 5;i < 10;i++){
a[i]=a[i-1]+a[i-2];
cout<<a[i];
if(i!=9)
cout<<" ";
}
cout<<endl;
// continue;
}
}
return 0;
}
这是一道关于数学推理的题目,要求根据等差、等比或斐波那契数列的规律,推断出给定序列的后续五个数字。输入包含多组测试数据,每组数据由五个整数组成,当所有数字为0时输入结束。示例中,给定序列1, 2, 3, 4, 5的后续数字应为6, 7, 8, 9, 10。在实现过程中,开发者遇到了斐波那契数列计算的精度问题,导致输出错误,最终通过修正解决了问题。"
116267636,8155027,Spring框架项目重命名导致的localhost重定向问题及解决方案,"['Spring框架', 'Web开发', '问题解决', '项目管理', '服务器配置']

1452

被折叠的 条评论
为什么被折叠?



