标程用的是高精,但其实不需要,只要先判断个位能否满足,不能的话就向前找到第一个不是9的数加1即可,还不行就变成1xxx9的形式
/*
author:jxy
lang:C/C++
university:China,Xidian University
**If you need to reprint,please indicate the source**
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char x[100005];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
scanf("%s",x);
int len=strlen(x),i,sum=0;
for(i=0;i<len;i++)
sum+=x[i]-'0';
sum-=x[len-1]-'0';
if(x[len-1]<':'-sum%10&&sum%10!=0) //':'=10+'0'
x[len-1]=':'-sum%10;
else
{
for(i=len-2;i>=0;i--)
{
if(x[i]!='9')
{
x[i]++;
x[len-1]='9'-sum%10;
break;
}
sum-=9;
x[i]='0';
}
if(i==-1)putchar('1'),x[len-1]='9';
}
printf("%s\n",x);
}
}