清北學堂模擬賽d1t1 位運算1(bit)
阿新 • • 發佈:2017-10-01
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 (inti = 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)