您的位置:首页 > 其它

SDJZ 找规律填数字

2013-08-18 20:26 363 查看

题目描述

小宇正在读小学,今天老师布置了几道数学题目。小宇平时上课经常不专心,这些他可发愁了,怎么办呢?看看你能不能帮帮他。

题目是给你一组有规律序列的前面5个整数,请你给出它后面跟着的5个整数,如:1,2,3,4,5,___,___,___,__,___。这是个等差数列,后面应该是6,7,8,9,10,就这么简单。而且现在小宇已经知道这串序列要么是等差数列,要么是等比数列或者是斐波那契数列。

输入格式

输入包含多组测试数据。每组输入5个整数,每个数字之间隔一个空格,当5个数字都为0时输入结束。

输出

对于每组输入,输出这串数列的后面5个数字,每个数字之间隔一个空格。

样例输入

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

代码:

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double a[10];
while(cin>>a[0]>>a[1]>>a[2]>>a[3]>>a[4])
{
if((a[0]==0)&&(a[1]==0)&&(a[2]==0)&&(a[3]==0)&&(a[4]==0))
{
break;
}
else if((a[0]==1)&&(a[1]==1)&&(a[2]==1)&&(a[3]==1)&&(a[4]==1))
{
for(int u=5;u<10;u++)
{
cout<<"1 ";
}
cout<<endl;
}
else
{
double d1=a[4]-a[3],d2=a[3]-a[2],d3=a[2]-a[1],d4=a[1]-a[0];
double q1=a[4]/a[3],q2=a[3]/a[2],q3=a[2]/a[1],q4=a[1]/a[0];
if((d1==d2)&&(d2==d3)&&(d3==d4))
{
double n=d1;
for(int i=5;i<10;i++)
{
a[i]=a[0]+n*i;
cout<<a[i]<<" ";
}
cout<<endl;
}
else if((q1==q2)&&(q2==q3)&&(q3==q4))
{
double q=q1;
for(int j=5;j<10;j++)
{
a[j]=a[0]*pow(q,j);
cout<<a[j]<<" ";
}
cout<<endl;
}
else
{
double d[10];
d[0]=a[0];
d[1]=a[1];
for(int t=2;t<10;t++)
{
d[t]=d[t-1]+d[t-2];
}
for(int y=5;y<10;y++)
{
cout<<d[y]<<" ";
}
cout<<endl;
}
}

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: