rt
人麻了没想到栽这了
for(int i=1;i<=len;i++)
{
if(a[i]>=a[i-1])
ans[i]=a[i]-a[i-1];
else
{
flg=0;
printf("-1");
break;
}
}
if(flg)
{
for(int i=1;i<=len;i++)
printf("%d",ans[i]);
}
printf("\n");
另外附一份完整代码
#include<bits/stdc++.h>
using namespace std;
const int N=1e7+10;
int a[N],len,ans[N];
char c[N];
bool ber(int x,int y)
{
for(int i=1;i<=len;i++)
{
if(i<y)
{
if(a[i])
return 1;
continue;
}
if(a[i]<x)
return 0;
if(a[i]>x)
return 1;
}
return 1;
}
void jian(int x,int y)
{
for(int i=len;i>=y;i--)
{
a[i]-=x;
if(a[i]<0)
a[i-1]--,a[i]+=10;
}
return;
}
int main()
{
int T,flg;
scanf("%d",&T);
while(T--)
{
scanf("%s",c+1);
len=strlen(c+1);
flg=1;
for(int i=1;i<=len;i++)
a[i]=c[i]-'0';
if(len==1&&a[1]==0)
{
printf("0\n");
continue;
}
if(len<=3000)
{
for(int i=1;i<=len;i++)
{
for(int j=9;j>=0;j--)
{
if(ber(j,i))
{
ans[i]=j;
jian(j,i);
break;
}
}
}
for(int i=1;i<=len;i++)
if(a[i])
{
flg=0;
printf("-1");
break;
}
if(flg)
{
int k=0;
for(int i=1;i<=len;i++)
{
if(ans[i])
k=1;
if(k)
printf("%d",ans[i]);
}
}
printf("\n");
}
else
{
for(int i=1;i<=len;i++)
{
if(a[i]>=a[i-1])
ans[i]=a[i]-a[i-1];
else
{
flg=0;
printf("-1");
break;
}
}
if(flg)
{
for(int i=1;i<=len;i++)
printf("%d",ans[i]);
}
printf("\n");
}
}
return 0;
}