定义一个数 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代码:

   1: #include <stdio.h>

   2: #include <math.h>

   3: #include <cstdarg>

   4: #include <string.h>

   5: #include <iostream>

   6: #define LL long long

   7: #define M(a) memset(a, 0, sizeof(a))

   8: using namespace std;

   9:  

  10: void Clean(int count, ...)

  11: {

  12:     va_list arg_ptr;

  13:     va_start (arg_ptr, count);

  14:     for (int i = 0; i < count; i++)

  15:         M(va_arg(arg_ptr, int*));

  16:     va_end(arg_ptr);

  17: }

  18:  

  19: char buf[100009];

  20:  

  21: int deal(int len)

  22: {

  23:     for (int i = 1; i <= len; i++)

  24:         buf[i] -= '0';

  25:     int mark = 0;

  26:     while (1)

  27:     {

  28:         buf[len] += 1;

  29:         for (int i =  len; i >= 0; i--)

  30:         {

  31:             if (buf[i] >= 10)

  32:             {

  33:                 buf[i] -= 10;

  34:                 buf[i - 1] += 1;

  35:             }

  36:         }

  37:         

  38:         if (buf[0]) mark = 1;

  39:         int temp = 0;

  40:         for (int i = 1 - mark; i <= len; i++)

  41:             temp += buf[i];

  42:         if (temp % 10 == 0) return mark;

  43:     }

  44: }

  45:  

  46: int main()

  47: {

  48:     int T, x;

  49:     scanf("%d", &T);

  50:     while (T--)

  51:     {

  52:         Clean(1, buf);

  53:         scanf("%s", &buf[1]);

  54:         int len = strlen((char *)(buf + 1));

  55:         for (int i = 1 - deal(len); i <= len; i++)

  56:             printf("%c", buf[i] + '0');

  57:         puts("");

  58:     }

  59:     return 0;

  60: }

HDU 4608 I-number 2013 Multi-University Training Contest 1的更多相关文章

  1. hdu 6301 Distinct Values (2018 Multi-University Training Contest 1 1004)

    Distinct Values Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  2. HDU 6038.Function-数学+思维 (2017 Multi-University Training Contest - Team 1 1006)

    学长讲座讲过的,代码也讲过了,然而,当时上课没来听,听代码的时候也一脸o((⊙﹏⊙))o 我的妈呀,语文不好是硬伤,看题意看了好久好久好久(死一死)... 数学+思维题,代码懂了,也能写出来,但是还是 ...

  3. hdu 5288 OO’s Sequence(2015 Multi-University Training Contest 1)

    OO's Sequence                                                          Time Limit: 4000/2000 MS (Jav ...

  4. hdu 5416 CRB and Tree(2015 Multi-University Training Contest 10)

    CRB and Tree                                                             Time Limit: 8000/4000 MS (J ...

  5. HDU 6091 - Rikka with Match | 2017 Multi-University Training Contest 5

    思路来自 某FXXL 不过复杂度咋算的.. /* HDU 6091 - Rikka with Match [ 树形DP ] | 2017 Multi-University Training Conte ...

  6. HDU 6125 - Free from square | 2017 Multi-University Training Contest 7

    思路来自这里 - - /* HDU 6125 - Free from square [ 分组,状压,DP ] | 2017 Multi-University Training Contest 7 题意 ...

  7. HDU 6129 - Just do it | 2017 Multi-University Training Contest 7

    比赛时脑子一直想着按位卷积... 按题解的思路: /* HDU 6129 - Just do it [ 规律,组合数 ] | 2017 Multi-University Training Contes ...

  8. HDU 6088 - Rikka with Rock-paper-scissors | 2017 Multi-University Training Contest 5

    思路和任意模数FFT模板都来自 这里 看了一晚上那篇<再探快速傅里叶变换>还是懵得不行,可能水平还没到- - 只能先存个模板了,这题单模数NTT跑了5.9s,没敢写三模数NTT,可能姿势太 ...

  9. HDU 6085 - Rikka with Candies | 2017 Multi-University Training Contest 5

    看了标程的压位,才知道压位也能很容易写- - /* HDU 6085 - Rikka with Candies [ 压位 ] | 2017 Multi-University Training Cont ...

  10. HDU 6073 - Matching In Multiplication | 2017 Multi-University Training Contest 4

    /* HDU 6073 - Matching In Multiplication [ 图论 ] | 2017 Multi-University Training Contest 4 题意: 定义一张二 ...

随机推荐

  1. Linux网络编程2——系统函数

    socket信息数据结构 #include <netinet/in.h> struct sockaddr { unsigned short sa_family; /*地址族*/ ]; /* ...

  2. 用android模拟器Genymotion定位元素

    1.下载并安装android模拟器Genymotion 2.拖apk包到模拟器,双击模拟器中的apk软件包,进入应用程序 3.下载并安装android sdk 3.1 点击...\Android\an ...

  3. 使用ADO连接oracle数据库“未找到提供程序。该程序可能未正确安装”解决方案

    问题描述:VS2010开发的C++程序,在一台Win7旗舰版的已安装Oracle客户端的PC上连接不上Oracle,提示“未找到提供程序.该程序可能未正确安装”,其他语言编写的程序比如C#是可以成功连 ...

  4. Yarn中如何生成状态机图

    原文 http://xiguada.org/yarn_state_picture/ 在Hadoop2.0系列的版本里,采用了状态机的方式处理ResourceManager,NodeManager,Ma ...

  5. 关于playmaker play animation出现警告 The AnimationClip 'xxx' used by the Animati ...

    转载自网络: 出现这个提示: The AnimationClip 'xxx' used by the Animation component 'xxx' must be marked as Legac ...

  6. JavaWeb项目开发案例精粹-第4章博客网站系统-003Dao层

    1. package com.sanqing.dao; import java.util.List; import com.sanqing.fenye.Page; import com.sanqing ...

  7. 新Android工程src和layout文件夹为空

    问题:SDK和ADT版本冲突 解决方案: 1.菜单->Help->Install  New Software.. 2.在work with放入地址:http://dl-ssl.google ...

  8. Android 去掉title bar的3个方法

    1. Java代码实现 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstance ...

  9. 结构体快排qsort()

    曾经用到过一次快排,感觉代码量没有减小,反而比较函数有点难编,但是这种排序一般不会出错(前提是比较函数写对了),而且速度很快,熟练后其实还是非常好用的! 用到快排是因为我做到一个题,是uva的1042 ...

  10. Pycharm连接gitlab

    一.从gitlab上clone代码到本地pycharm (一).gitlab上找到创建项目的连接地址,分两种: 1. http连接方式: http://10.22.1.72/derekchen/cxg ...