其他分享
首页 > 其他分享> > AT2686 [ARC080A] 4-adjacent 题解

AT2686 [ARC080A] 4-adjacent 题解

作者:互联网

这道题目如果是暴力肯定不行,标签是入门,看着是个数学题。

如何判断两个数的积是 \(4\) 的倍数呢?

所以我们只要边读入边把 \(4\) 的倍数和是 \(2\) 的倍数但不是 \(4\) 的倍数的个数分别计入 \(sum1\) 和 \(sum2\) 中。

注意:这里的判断倍数有先后顺序,要用 else if

得到了 \(sum1\) 和 \(sum2\) 后,\(2\) 的倍数需要两两配对才能组成 \(4\) 的倍数,所以要 \(sum \div 2\),而 \(4\) 的倍数可以与其他任何数配对,所以没有要求,直接加上就可以了,\(sum1 + sum2\) 就是总的配对组数,如果组数大于 \(n \div 2\),输出 Yes,否则输出 No

代码见下

#include <bits/stdc++.h>
using namespace std;
int n, num, sum1, sum2;
int main() {
	scanf("%d", &n);
	for(int i = 1; i <= n; i++) {
		scanf("%d", &num);
		if(num % 4 == 0) sum1++;
		else if(num % 2 == 0) sum2++;
	}
	if(sum2 / 2 + sum1 >= n / 2) printf("Yes");
	else printf("No");
	return 0;
}

标签:int,题解,sum2,sum1,因数,AT2686,倍数,adjacent,配对
来源: https://www.cnblogs.com/sunskydp/p/solution-at2686.html