CF2144A.Cut the Array
入门
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个包含 n 个非负整数的数组 [a1,a2,…,an]。
你需要将其切分为三个非空部分:前缀、中间部分和后缀。具体来说,你需要选择两个整数 l 和 r,满足 1≤l<r<n,得到三部分:
- 前缀部分包含第 1 个到第 l 个元素(即 [a1,a2,…,al]);
- 中间部分包含第 l+1 个到第 r 个元素(即 [al+1,al+2,…,ar]);
- 后缀部分包含第 r+1 个到第 n 个元素(即 [ar+1,ar+2,…,an])。
令 s1,s2,s3 分别表示上述三部分元素和对 3 取模的余数,即:
- s1=(i=1∑lai)mod3;
- s2=(i=l+1∑rai)mod3;
- s3=(i=r+1∑nai)mod3。
你的任务是找到一组 l 和 r,使得 s1,s2,s3 要么全都不同,要么全都相等。
输入格式
第一行为一个整数 t(1≤t≤1000),表示测试用例的数量。
每个测试用例包含两行:
- 第一行一个整数 n(3≤n≤40);
- 第二行为 n 个整数 a1,a2,…,an(0≤ai≤40)。
输出格式
对于每个测试用例,如果存在一组合适的整数 l 和 r(1≤l<r<n),输出这两个数(如果有多组解,输出任意一组即可)。如果不存在合适的切割方法,则输出两个 0。
输入输出样例
输入#1
4 6 1 2 3 4 5 6 4 1 3 3 7 3 2 1 0 5 7 2 6 2 4
输出#1
3 5 0 0 1 2 2 4
说明/提示
参考样例中的说明:
- 在第一个样例中,数组被分为 [1,2,3]、[4,5]、[6],s1=s2=s3=0;
- 在第二个样例中,没有满足条件的切割方法;
- 在第三个样例中,数组被分为 [2]、[1]、[0],s1=2,s2=1,s3=0;
- 在第四个样例中,数组被分为 [7,2]、[6,2]、[4],s1=0,s2=2,s3=1。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?