CF1110A Parity 题解
Content
求下面式子的奇偶性,其中 \(a_i,k,b\) 会在输入中给定。
\[\sum\limits_{i=1}^k a_i\cdot b^{k-i}
\]
数据范围:\(2\leqslant b\leqslant 100,1\leqslant k\leqslant 10^5,0\leqslant a_i<b\)。
Solution
分类讨论的题目。
我们根据 \(k\) 的奇偶性来分类讨论。
- 如果 \(k\) 是偶数,那么由于到了 \(i=k\) 的时候,\(a_k\cdot b^{k-k}=a_k\),并且除了这一项之外的所有项肯定都会是偶数(因为无论什么数与偶数相乘都是偶数),所以我们只需要看 \(a_k\) 的奇偶性就好,毕竟整个式子的奇偶性就和 \(a_k\) 是一样的。
- 否则,如果 \(k\) 是奇数,那么我们遍历整个 \(a\) 数组,看里面有几个奇数,最后再判断奇数个数是否为奇数,如果是的那么这个式子的结果是奇数,否则它就是偶数。
讨论完之后,代码就很显而易见了。
Code
int b, k, a[100007], ans;
int main() {
getint(b), getint(k);
_for(i, 1, k) getint(a[i]);
if(!(b % 2)) return printf(a[k] % 2 ? "odd" : "even"), 0;
_for(i, 1, k) ans += a[i] % 2;
printf(ans % 2 ? "odd" : "even");
return 0;
}

浙公网安备 33010602011771号