• 清北学堂模拟赛d1t1 位运算1(bit)


    题目描述
    LYK拥有一个十进制的数N。它赋予了N一个新的意义:将N每一位都拆开来后再加起来就是N所拥有的价值。例如数字123拥有6的价值,数字999拥有27的价值。
    假设数字N的价值是K,LYK想找到一个价值是K-1的数字,当然这个答案实在太多了,LYK想使得这个价值为K-1的数字尽可能大。

    输入格式(bit.in)
    一个数N。

    输出格式(bit.out)
    一个数表示答案。你需要输出一个非负整数,且这个数不包含前导0。

    输入样例1
    199

    输出样例1
    198

    输入样例2
    1000

    输出样例2
    0

    对于20%的数据n<=10
    对于40%的数据n<=100
    对于60%的数据n<=1000
    对于100%的数据1<=n<=100000。

    分析:小学组难度,读入字符串从末尾找第一个不是0的数,输出的时候标记一下前导0就好了.

    #include <bits/stdc++.h>
    
    using namespace std;
    
    char s[1000];
    bool flag = false;
    
    int main()
    {
        freopen("bit.in","r",stdin);
        freopen("bit.out","w",stdout);
        scanf("%s",s + 1);
        int sizee = strlen(s + 1);
        //printf("%d
    ",sizee);
        for (int i = sizee; i >= 1; i--)
        {
            if (s[i] != '0')
            {
            s[i]--;
            break;
            }
        }
        for (int i = 1; i <= sizee; i++)
        {
        if (!flag && s[i] != '0')
        flag = 1;
        if (flag)
        printf("%c",s[i]);
        }
        if (!flag)
        printf("0");
        printf("
    ");
        
        return 0;
    }
  • 相关阅读:
    POJ 1017
    poj 2709
    poj 1328
    POJ 2386
    POJ 1065
    POJ 3728
    hdu--1004--Let the Balloon Rise
    hdu--2570--迷瘴(贪心)
    hdu--1257--最少拦截系统(贪心)
    hdu--1230--火星A+B
  • 原文地址:https://www.cnblogs.com/zbtrs/p/7617565.html
Copyright © 2020-2023  润新知