zoukankan      html  css  js  c++  java
  • 杭电 HDU 4608 I-number

    http://acm.hdu.edu.cn/showproblem.php?pid=4608


    听说这个题是比赛的签到题。。。。。。无语。。。。。

    问题:给你一个数x,求比它大的数y。
    y的要求:
    1、y>x
    2、y的每一位数相加的和为10的倍数
    3、求最小的y

    直接模拟,个位数加一然后求各位数总和是否为10的倍数。。。

    有的人还考虑了前导零和后导零导致错误。这个题不用考虑那么多。。。坑。。。。

    这个题一开始做的好郁闷,没有考虑到 最高位进位,导致我提交全是WA,所以我用的数组存数据,而且是倒着存,即个位在x[0]处,这样存有个好处就是进位时不需要对整个数组
    进行移动来给新的最高位空出位置(PS,其实好像也可以用习惯的存储,只要用a[0]来预存一个最高位进位,反正最多只会进位一次。。)

    AC代码:
    #include<iostream>
    #include<cstdio>
    #include<cstring>
    
    using namespace std;
    
    char x[100010],b[100010];
    
    int main()
    {
        int t,d,i,n,p;
        scanf("%d",&t);
        while(t--)
        {
            memset(x,0,sizeof(x));
            scanf("%s",&b);
            n = strlen(b);
            for(i = 0; i < n; i++)
            {
                x[n-1-i] = b[i];
            }
            n = strlen(x);
    //        printf("n:%d
    ",n);
            p = 1;
            while(p%10!=0)
            {
                p=d=0;
                x[0] += 1;
       //         printf("%c ",x[n-1]);
                while(x[0+d] > '9')   //处理进位
                {
                    x[0+d] = '0';
                    d++;
                    if(d==n)  //如果最高位再进位后更新长度并使新的最高位数为1
                    {
                        x[0+d] = '1';
                        n++;
                    }
                    else
                    {
                        x[0+d] += 1;
                    }
      //              printf("d:%d n:%d",d,n);
                }
                for(i = 0; i < n; i++)
                {
                    p += (int)(x[i]-'0');
                }
            }
     //       printf("
    ");
            for(i = n-1; i >= 0; i--)
            {
                printf("%c",x[i]);
            }
            printf("
    ");
        }
    
        return 0;
    }
    


  • 相关阅读:
    身份证验证(c#和js)
    获取焦点问题
    关于加载设计器遇到一个或多个错误问题的解决方案
    关于如何使用自定义的结束消息循环的方式 (转载)
    多种重要源码下载
    关于线程同步(转载)
    ArrayList的使用技巧
    一些所谓有利于家庭生活的优点
    080801 30℃
    080731 31℃
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/3215061.html
Copyright © 2011-2022 走看看