您的位置:首页 > 其它

ACM pku 1658 解题报告(另一种输入输出方式)

2006-01-23 04:06 330 查看
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]);

}

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