HDU 4608 I-number 2013 Multi-University Training Contest 1 1009题

时间:2023-03-09 15:09:42
HDU 4608  I-number  2013 Multi-University Training Contest 1 1009题

题目大意:输入一个数x,求一个对应的y,这个y满足以下条件,第一,y>x,第二,y 的各位数之和能被10整除,第三,求满足前两个条件的最小的y。

解题报告:一个模拟题,比赛的时候确没过,感觉这题太坑了,比赛的时候对于所有的测试数据都能得出正确的结果,但是这题的数据太坑了,要求如果输入里面带了前导0,在输出时要按照原样将前导0输出来,我一直以为要把前导0去掉,所以一直没过。然后就是这题y<=x+20,由于满足这个关系,所以只要将输入的数经过多次加1,暴力,然后逐一判断是否满足条件就可以了。

 #include<cstdio>
#include<cstring>
const int MAX = +; char str[MAX];
int T,IN[MAX],sum,len;
int oper() {
len = strlen(str);
for(int i = ;i<len;++i) {
IN[len--i] = str[i]-'';
sum+=IN[len--i];
}
return sum;
}
void jinwei() {
int i = ;
bool flag = ;
while(IN[i]>) {
IN[i+]++;
IN[i]%=;
sum-=;
flag = ;
i++;
}
sum++;
}
int main() {
scanf("%d",&T);
while(T--) {
scanf("%s",str);
sum = ;
memset(IN,,sizeof(IN));
sum = oper();
IN[]++;
jinwei();
while(sum%!=) {
IN[]++;
jinwei();
}
if(IN[len] != )
len++;
for(int i = len-;i>=;--i)
printf("%d",IN[i]);
str[] = NULL;
printf("\n");
}
return ;
}