CCA的数列
CCA的数列
https://ac.nowcoder.com/acm/contest/9700/A
CCA的数列
题目链接:nowcoder 213875
到主站看:https://blog.csdn.net/weixin_43346722/article/details/112132183
题目大意
判断一个数列是否是等差序列,等比数列,等模数列的其中一个。
等模数列的定义是:对于任意相邻两数,后一个对前一个取模后的值均相等。
思路
就直接模拟,开三个 bool 变量。
最后只要剩下一个,都输出 YES,否则就是 NO。
记得等比数列的那个地方,相邻数的比不一定是整数,可能是小数。
代码
#include<cstdio>
using namespace std;
int n, cha, mo, a[100001];
double bi;
bool yes1, yes2, yes3;
int main() {
yes1 = yes2 = yes3 = 1;
scanf("%d", &n);
scanf("%d %d", &a[1], &a[2]);
cha = a[2] - a[1];
bi = (a[2] * 1.0) / (a[1] * 1.0);
mo = a[2] % a[1];
for (int i = 3; i <= n; i++) {
scanf("%d", &a[i]);
if (yes1) {
if (cha != a[i] - a[i - 1]) {
yes1 = 0;
}
}
if (yes2) {
if (bi != (a[i] * 1.0) / (a[i - 1] * 1.0))
yes2 = 0;
}
if (yes3) {
if (mo != a[i] % a[i - 1])
yes3 = 0;
}
if (!yes1 && !yes2 && !yes3) {
printf("NO");
return 0;
}
}
if (yes1 || yes2 || yes3) printf("YES");
else printf("NO");
return 0;
} 


查看12道真题和解析