只看模 3 的余数即可。一次操作可以把任意位置的数改成 数组中已存在 的某个值,因此我们最终能构造的数组,只由当前数组中出现过的“余数集合” {0,1,2}
决定。
记是否出现过 0,1,2
这三种余数。分类结论:
n*1 mod 3
(或 2n mod 3
),
因而 当且仅当 n % 3 == 0
时为 Yes,否则 No。给定一个长度为n 的整数数组{a1,a2,...,an}。当且仅当数组 a 的所有元素和是3的整数倍时,称该数组为好 的数组。你可以进行如下操作任意次(也可以不进行任何操作)
请判断,是否可以通过若干次上述操作,使数组变为好的数组。
每个测试文件均包含多组测试数据。第一行输入一个整数T(1≦T≦104)代表数据组数,每组测试数据描述如下:
除此之外,保证单个测试文件的n之和不超过2×105。
对于每一组测试数据,新起一行:若可以通过若干次操作使数组变为好的数组,输出Yes;否则输出 No。大小写需严格一致。
输入
3
3
1 1 1 1
3
1 2 2
2
1 1
输出
Yes
Yes
No
说明
在这组测试数据中: 第一组:∑ai=3,已是3的整数倍,输出Yes;
第二组:可将a1 修改为a2,得到{2,2,2},元素和为6,输出 Yes;
第三组:只能得到{1,1},元素和为2,无法成为3的整数倍,输出 No