您的位置:首页 > 其它

找规律填数字

2017-11-14 12:55 148 查看
描述

小瑜还在读幼儿园呢,现在的小孩子正够可怜的......

这不,老师给孩子们布置了一道连很多大人都不会的数学题目。且看:

给你一组有规律序列的前面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
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main()
{
int x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,d,q;
while(scanf("%d %d %d %d %d",&x1,&x2,&x3,&x4,&x5)==5)
{
if(x1==0&&x2==0&&x3==0&&x4==0&&x5==0) break;
if((x2-x1)==(x3-x2)&&(x4-x3)==(x5-x4))
{
d=x2-x1;
x6=x5+d;
x7=x6+d;
x8=x7+d;
x9=x8+d;
x10=x9+d;
}
else
{
if(((double)x2/x1)==((double)x3/x2)&&((double)x4/x3)==((double)x5/x4))
{
q=x2/x1;
x6=x5*q;
x7=x6*q;
x8=x7*q;
x9=x8*q;
x10=x9*q;
}
else
{
x6=x4+x5;
x7=x5+x6;
x8=x6+x7;
x9=x7+x8;
x10=x8+x9;
}
}
printf("%d %d %d %d %d\n",x6,x7,x8,x9,x10);
}
return 0;
}


这里有一点要注意的是等差数列的时候需要一个强制性的转换1.0*某个整数会隐式的将这个数转换成double,然后再执行后面的除法运算。 如果你做除法以后再转换成double,那么做的其实还是整数除法(也就是小数点部分被略去了),所以要在等差数列前加一个double型的强制转化,其余的很简单了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: