Eva's Problem
Time Limit:1000MS Memory Limit:10000K
Total Submit:3235 Accepted:1733
Description
Eva的家庭作业里有很多数列填空练习。填空练习的要求是:已知数列的前四项,填出第五项。因为已经知道这些数列只可能是等差或等比数列,她决定写一个程序来完成这些练习。
Input
第一行是数列的数目t(0 <= t <= 20)。以下每行均包含四个整数,表示数列的前四项。约定数列的前五项均为不大于10^5的自然数,等比数列的比值也是自然数。
Output
对输入的每个数列,输出它的前五项。
Sample Input
2
1 2 3 4
1 2 4 8
Sample Output
1 2 3 4 5
1 2 4 8 16
Source
POJ Monthly--2004.05.15 Null
从前总是在输入全部完成后,再将结果一起输出。这次不知闹的是什么鬼,那样输出老是不行,就试得用输入后立刻输出的方式,成功了。
代码如下:
main()
{
int count;
int i,j,ans;
int num[20];
scanf("%d",&count);
for(i=0;i<count;i++)
{
scanf("%d%d%d%d",&num[0],&num[1],&num[2],&num[3]);
if( ( (num[1]-num[0]) == (num[2]-num[1]) ) && ( (num[2]-num[1]) == (num[3]-num[2]) ) ){
ans=2*num[3]-num[2];
}else{
ans=num[3]*num[3]/num[2];
}
printf("%d %d %d %d %d/n",num[0],num[1],num[2],num[3],ans);
}
}
终于知道闹的是什么鬼了!本机测试的时候把输入原样输出,忘了删掉了!
代码如下(待输入全部完成后再输出的):
main()
{
int count;
int i;
int ary[1000][20];
scanf("%d",&count);
for(i=0;i<count;i++)
{
scanf("%d%d%d%d",&ary[i][0],&ary[i][1],&ary[i][2],&ary[i][3]);
}
for(i=0;i<count;i++)
{
if( ( (ary[i][1]-ary[i][0]) == (ary[i][2]-ary[i][1]) ) && ( (ary[i][2]-ary[i][1]) == (ary[i][3]-ary[i][2]) ) )
{
ary[i][4]=2*ary[i][3]-ary[i][2];
}else{
ary[i][4]=ary[i][3]*ary[i][3]/ary[i][2];
}/*if else*/
}/*for*/
for(i=0;i<count;i++)
{
printf("%d %d %d %d %d/n",ary[i][0],ary[i][1],ary[i][2],ary[i][3],ary[i][4]);
}
}