定义一个数 y 为 x 的 I-number。对于 y 有如下要求:

1、y > x;

2、y 的每一位之和要为10的倍数(例如 28 每一位之和为 10 ,为 10 的 1 倍);

3、这样的 y 有很多个,但是I-number为最小的那个

注意:x 的长度不会超过 105

这道题目可以直接爆搞,因为可以证明符合要求的 y 一定满足 y < x + 20

但是在敲这道题目的时候需要注意,他会有恶心的前导 0 , 而且不能删除这些前导 0 。 例如,202 对应的   I-number为208。 但如果他输入的是 000202 , 那么输出是 000208 这样。

这道题目除了上面那个坑意外,可以随便搞定,其他的就不赘述了。

附上AC代码:

#include <stdio.h>
#include <math.h>
#include <cstdarg>
#include <string.h>
#include <iostream>
long
sizeof(a))
namespace std;
   9:  
int count, ...)
  11: {
  12:     va_list arg_ptr;
  13:     va_start (arg_ptr, count);
int i = 0; i < count; i++)
int*));
  16:     va_end(arg_ptr);
  17: }
  18:  
char buf[100009];
  20:  
int len)
  22: {
int i = 1; i <= len; i++)
'0';
int mark = 0;
while (1)
  27:     {
  28:         buf[len] += 1;
int i =  len; i >= 0; i--)
  30:         {
if (buf[i] >= 10)
  32:             {
  33:                 buf[i] -= 10;
  34:                 buf[i - 1] += 1;
  35:             }
  36:         }
  37:         
if (buf[0]) mark = 1;
int temp = 0;
int i = 1 - mark; i <= len; i++)
  41:             temp += buf[i];
return mark;
  43:     }
  44: }
  45:  
int main()
  47: {
int T, x;
, &T);
while (T--)
  51:     {
  52:         Clean(1, buf);
, &buf[1]);
char *)(buf + 1));
int i = 1 - deal(len); i <= len; i++)
'0');
);
  58:     }
return 0;
  60: }

相关文章: