【模拟】找规律填数字

描述

小瑜还在读幼儿园呢,现在的小孩子正够可怜的…
这不,老师给孩子们布置了一道连很多大人都不会的数学题目。且看:
给你一组有规律序列的前面5个整数,请你给出它后面跟着的5个整数,如:1,2,3,4,5,___,___,_,,___。这是个等差数列, 后面应该是6,7,8,9,10,这倒简单。但现在老师告诉孩子们这串序列有可能是等差数列,等比数列或者是斐波那契数列。亲爱的,你能帮小瑜完成这个题目吗?

输入

输入有多组数据,每组数据占一行,有5个数字组成,每个数字之间隔一个空格,当5个数字都为0时输入结束。

输出

每组测试数据对应一个输出为这串数列的后面5个数字,每个数字之间隔一个空格。当输入的5个数字都为0时不用输出结果。

样例输入

1 2 3 4 5
1 2 4 8 16
1 2 3 5 8
0 0 0 0 0

样例输出

6 7 8 9 10
32 64 128 256 512
13 21 34 55 89

提示

用int可以满足精度

分析:
情况1:递增/减
情况2:比例关系
情况3:前两数之和
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int num[11];
while(cin>>num[0]>>num[1]>>num[2]>>num[3]>>num[4])
{
if (!num[0]&&!num[1]&&!num[2]&&!num[3]&&!num[4])
{
break;
}
//case 1
if (num[1]-num[0]==num[4]-num[3])
{
int d=num[2]-num[1];
for (int i=5;i<10;i++)
{
num[i]=num[i-1]+d;
}
}
else
//case 2
if (num[3]*num[1]==num[2]*num[2])
{
int d=num[2]/num[1];
for (int i=5;i<10;i++)
{
num[i]=num[i-1]*d;
}
}
else
//case 3
{
for (int i=5;i<10;i++)
{
num[i]=num[i-1]+num[i-2];
}
}
for (int i=5;i<10;i++)
{
if (i!=5) cout<<’ ';
cout<<num[i];
}
cout<<endl;
}
return 0;
}

发布了122 篇原创文章 · 获赞 0 · 访问量 4659

猜你喜欢

转载自blog.csdn.net/Skynamer/article/details/104157475