作业"/>
小蒜的回家作业
小蒜的回家作业
计蒜客 - T1293
小蒜的家庭作业里有很多数列填空练习。
填空练习的要求是:已知数列的前四项,填出第五项。因为已经知道这些数列只可能是等差或等比数列,她决定写一个程式来完成这些练习。
输入格式
第一行是数列的数目
吨
(
0
≤
吨
≤
20
)
。
以下每行均包含四个整数,表示数列的前四项。
约定数列的前五项均为不大于
10
5
的自然数,等比数列的比值也是自然数。
输出格式
对输入的每个数列,输出它的前五项。
样本输入
2
1 2 3 4
1 2 4 8
样本输出
1 2 3 4 5
1 2 4 8 16
题意描述:给你多组数据,每组给4个数,它可能是等比数列,也可能是等差数列,输出该数列的前五位数
解题思路:先吧前两个数相减或者相除的结果存入另外两个数中,然后用两个for循环判断后每一个数与前一个数是等差还是等比关系,即拿每一个数与前一个数相减相除,如果是等差再定义一个数表示是等差数列,等比就定义为另一个数,然后把前四个数输出来,如果是等差,就把第四个数加上前面算的差值,如果是等比,就把第四个数乘以前面算的等比值
易错分析:注意数组定义。
AC
#include<stdio.h>
#include<string.h>
int f[1005000];
int main(void)
{int t,a,b,p,find;scanf("%d",&t);while(t--){memset(f,0,sizeof(f));find=0;for(int i=1;i<=4;i++){scanf("%d",&f[i]);}a=f[2]-f[1];b=f[2]/f[1];for(int i=2;i<=4;i++){for(int j=1;j<i;j++){if(f[j]+a==f[i]){find=1;}else if(b*f[j]==f[i]){ find=0;}}}for(int i=1;i<=4;i++){printf("%d ",f[i]); } if(find==1)printf("%d\n",f[4]+a);elseprintf("%d\n",f[4]*b);}return 0;
}
更多推荐
小蒜的回家作业
发布评论