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\) 的奇偶性来分类讨论。

  1. 如果 \(k\) 是偶数,那么由于到了 \(i=k\) 的时候,\(a_k\cdot b^{k-k}=a_k\),并且除了这一项之外的所有项肯定都会是偶数(因为无论什么数与偶数相乘都是偶数),所以我们只需要看 \(a_k\) 的奇偶性就好,毕竟整个式子的奇偶性就和 \(a_k\) 是一样的。
  2. 否则,如果 \(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;
}
posted @ 2021-12-17 14:31  Eason_AC  阅读(33)  评论(0)    收藏  举报