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; }