HDU 4608 I-number
题意:给定一个x,要找一个y,要求y>x,且y所有位加和为10的倍数,输出最小的y。 注意的是x很大,用字符串处理。处理过程还是有很多细节的..........
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string>
#include <vector>
#include <set>
#include <queue>
#include <stack>
#include <climits>//形如INT_MAX一类的
#define MAX 100005
#define INF 0x7FFFFFFF
using namespace std;
int a[MAX];
char s[MAX];
int main() {
int T,i,j;
scanf("%d",&T);
getchar();
while(T--) {
gets(s);
int len = strlen(s);
j = len-1;
for(i=0; s[i]; i++)
a[j--] = s[i]-'0';
int sum = 1,t = 0;
while(sum % 10) {
for(i=0; i<len; i++) {
if(i == 0) a[i] ++;
else a[i] += t;
if(a[i] >= 10) {
a[i] = a[i] % 10;
t = 1;
} else t = 0;
}
if(t == 1) {
a[len++] = t;
t = 0;
}
sum = 0;
for(i=0; i<len; i++)
sum += a[i];
}
for(i=len-1; i>=0; i--)
printf("%d",a[i]);
printf("\n");
}
return 0;
}
这场赛后也没做什么题.......只有一题了