根据每个字符的模3性,分类讨论即可,注意特判必须删第一个数字的情况。
#include<bits/stdc++.h>
#define int long long
#define double long double
#define x first
#define y second
using namespace std;
typedef long long LL;
typedef long long ll;
typedef pair<int,int> PII;
const int N=3e5+10;
const int M=1e3+10;
int mod=1e9+7;
int a[N];
void solve(){
string s;cin>>s;
vector<int>v(4);
int sum=0;
for(auto it:s){
int x=it-'0';
sum+=x;
v[x%3]++;
}
int sp=s.size();
sum%=3;
// cout<<sum<<"\n";
if(sum==0){
if(v[0]==s.size()) cout<<v[0]-1<<"\n";
else cout<<v[0]<<"\n";
return ;
}
if(v[sum]){
v[sum]--;
sp--;
if(v[sum]==0&&sum==(s[0]-'0')%3){
int pos=1;
while(pos<s.size()&&s[pos]=='0') v[0]--,pos++,sp--;
}
if(v[0]==sp) cout<<v[0]<<"\n";
else cout<<v[0]+1<<"\n";
}else cout<<0<<"\n";
}
signed main(){
ios::sync_with_stdio(false);
cin.tie(0),cout.tie(0);
int _;
_=1;
cin>>_;
while(_--){
solve();
}
}

京公网安备 11010502036488号