题解 CF328A 【IQ Test】
这题也不算太难啦qwq。
首先,判断等差数列。
等差数列其实就是相邻两个数之间的差相等的数列。比如,如果
直接移项,不难看出
所以判断等差数列就可以直接判断了。
等比数列其实差不多,还是上面的
随便变形一下就可以看出来
那么输出下一项呢?
- 如果
a,b,c,d 成等差数列,那么公差就是b-a ,输出d+b-a 即可。 - 如果
a,b,c,d 成等比数列,那么设下一项是e ,则由上面的性质,我们可以知道:ce=d^2 ,所以e=\dfrac{d^2}{c} 。 - 注意:题目中说这个数必须是整数,所以此时必须有
c\left|d^2\right. ,否则下一项不是整数,需要输出42!
Code:
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
#include<iostream>
#include<vector>
#include<cmath>
using namespace std;
int a,b,c,d;
int main(void){
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a+c==b*2&&b+d==c*2)printf("%d\n",d+(b-a));
else if(a*c==b*b&&b*d==c*c)printf("%d\n",((d*d)%c)?42:(d*d/c));
else puts("42");
return 0;
}