可以证明 三个各位数之和相等的数 的和一定是三的倍数
那么只要把数字除以三就好了
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=10005;
int len; char str[N];
int num[N],ans[N];
int main(){
freopen("t.in","r",stdin);
freopen("t.out","w",stdout);
scanf("%s",str+1); len=strlen(str+1);
if (len==1 && str[1]=='0') return printf("0 0 0\n"),0;
for (int i=1;i<=len;i++){
num[i]+=str[i]-'0';
ans[i]=num[i]/3;
num[i+1]+=num[i]%3*10;
}
if (num[len+1]) return printf("-1\n"),0;
for (int t=0;t<3;t++){
int flag=0;
for (int i=1;i<=len;i++){
if (ans[i]) flag=1;
if (flag) printf("%d",ans[i]);
}
if (t<2) printf(" ");
}
return 0;
}