1.思路:
首先余数就三种情况:0,1,2。其中假如余数为1就不需要任何操作,余数为1的话分两种情况,当这些数种有数字 x%3==1,这样只需要执行一次操作(将这个数删掉),当没有时就只能通过加1操作,要执行两次。余数为 2 时不管执行那一种操作,只需要一次操作。
2.代码
#include <iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N = 1e5+10;
typedef long long ll;
int arr[N];
void sovle() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) cin >> arr[i];
ll sum = 0;
//标记是否有模3 余数为1 的数存在
bool flag=false;
for (int i = 1; i <= n; i++) {
sum += arr[i];
if(arr[i]%3==1) flag = true;
}
if(sum%3==0) cout<<0<<endl;
else if(sum%3==1){
if(flag==1) cout<<1<<endl;
else cout<<2<<endl;
}else{
cout<<1<<endl;
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int t;
cin >> t;
while (t--) {
sovle();
}
return 0;
}