1. 程式人生 > >清北學堂模擬賽d1t1 位運算1(bit)

清北學堂模擬賽d1t1 位運算1(bit)

main strlen 可能 難度 str 價值 100% int sin

題目描述
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\n",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("\n
"); return 0; }

清北學堂模擬賽d1t1 位運算1(bit)