A. Cut the Array
将数组分段,每段和 % 3 得数 s 要么都相同,要么都不同,就说明这个数组可分。
s 所有可能的结果: 0 , 1 , 2 。
数组可分的组合:

  1. (0 * 3)%3 == 0
  2. (1 * 3)%3 == 0
  3. (2 * 3)%3 == 0
  4. (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;
	}
}
posted on 2025-10-24 21:49  一方见地  阅读(5)  评论(0)    收藏  举报