1072:找规律填数字分数: 1
题目描述
小宇正在读小学,今天老师布置了几道数学题目。小宇平时上课经常不专心,这些他可发愁了,怎么办呢?看看你能不能帮帮他。
题目是给你一组有规律序列的前面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<cstdio>
#include<cstring>
struct info
{
int flag;
double a;
}unit[100];
using namespace std;
int main()
{
int i,j,k,l;
while(cin>>unit[0].a>>unit[1].a>>unit[2].a>>unit[3].a>>unit[4].a)
{
if((unit[0].a==0)&&(unit[1].a==0)&&(unit[2].a==0)&&(unit[3].a==0)&&(unit[4].a==0))
break;
for(i=0;i<5;i++)
unit[i].flag=0;
double d1,d2,d3,d4,d5;
d5=1;
for(k=0;k<3&&d5;)
{
if(k==0)//dengcha
{
d1=unit[1].a-unit[0].a;
d2=unit[2].a-unit[1].a;
d3=unit[3].a-unit[2].a;
d4=unit[4].a-unit[3].a;
if((d1==d2)&&(d2==d3)&&(d3==d4))
{
unit[0].flag=1;
d5=0;
}
k++;
}
else
if(k==1)
{
d1=unit[1].a/unit[0].a;
d2=unit[2].a/unit[1].a;
d3=unit[3].a/unit[2].a;
d4=unit[4].a/unit[3].a;
//printf("%d %d %d %d",d1,d2,d3,d4);
if((d1==d2)&&(d2==d3)&&(d3==d4))
{
unit[0].flag=2;
d5=0;
break;
}
k++;
}
else
if(k==2)
{
unit[0].flag=3;
d5=0;
}
}
if((unit[0].a==unit[1].a)&&(unit[1].a==unit[2].a)&&(unit[2].a==unit[3].a)&&(unit[3].a==unit[4].a)&&unit[0].a!=0)
{
for(i=0;i<2;i++)
printf("%.f %.f %.f %.f %.f\n",unit[0].a,unit[1].a,unit[2].a,unit[3].a,unit[4].a);
}
else
if(unit[0].flag==1)
{
d1=unit[1].a-unit[0].a;
unit[5].a=unit[4].a+d1;
for(i=6;i<10;i++)
{
unit[i].a=unit[i-1].a+d1;
}
for(i=5;i<9;i++)
printf("%.f ",unit[i].a);
printf("%.f\n",unit[9].a);
}
else
if(unit[0].flag==2)
{
d1=unit[1].a/unit[0].a;
unit[5].a=unit[4].a*d1;
//printf("kkk%dkkk\n",d1);
for(i=6;i<10;i++)
{
unit[i].a=unit[i-1].a*d1;
}
for(i=5;i<9;i++)
printf("%.f ",unit[i].a);
printf("%.f\n",unit[9].a);
}
else
{
for(i=5;i<10;i++)
{
unit[i].a=unit[i-1].a+unit[i-2].a;
//printf(" h%dh \n",unit[i].a);
}
for(i=5;i<9;i++)
printf("%.f ",unit[i].a);
printf("%.f\n",unit[9].a);
}
}
}