A. Cut the Array
将数组分段,每段和 % 3 得数 s 要么都相同,要么都不同,就说明这个数组可分。
s 所有可能的结果: 0 , 1 , 2 。
数组可分的组合:
- (0 * 3)%3 == 0
- (1 * 3)%3 == 0
- (2 * 3)%3 == 0
- (0 + 1 + 2)%3 ==0
故 数组之和 sum % 3 == 0 就说明这个数组可分。
那在sum % 3 == 0(可分)的情况下,l和r具体是多少呢?
我们假设前两个数分别为a , b。a 与 b的关系有两种情况一、相同,二、不同。
情况一对应1,2,3;情况二对应4。因为n >= 3,所以l = 1,r = 2这个分法一定是成立的。
点击查看代码
#include<iostream>
using namespace std;
int main()
{
int t;
cin >> t;
while (t--) {
int n, a, sum = 0;
cin >> n;;
for (int i = 0;i < n;i++) {
cin >> a;
sum += a;
}
if (sum % 3 != 0)cout << 0 << ' ' << 0 << endl;
else cout << 1 << ' ' << 2 << endl;
}
}
浙公网安备 33010602011771号