fork(4) download
  1. #include <iostream>
  2. #include <string>
  3. #include <sstream>
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8. string num;
  9. while (cin >> num, num != "0")
  10. {
  11. bool flag;
  12. do
  13. {
  14. //這部分處理 sum += num*num 寫的有點亂,先隱藏起來避免影響各位閱讀
  15. //以下是遞減的部分~
  16. flag = 0;
  17. string::size_type sz = num.size();
  18. --sz;
  19. while (flag == 0) //對num遞減1
  20. {
  21. if (num[sz] != '0') //從字串最右邊開始檢查,如果不等於0,可以直接減1,更改flag表示完成遞減
  22. {
  23. num[sz] = num[sz]-1;
  24. flag = 1;
  25. }
  26. else //如果等於0,那就把0改成9,往左邊一位數移動,繼續檢查是否夠減
  27. {
  28. num[sz] = '9';
  29. --sz;
  30. }
  31. }
  32. if (num[0] == '0') //當上面遞減時出現01234時,刪去第一個0
  33. { //變成1234,否則會造成之後遞減時出現錯誤
  34. num = num.substr(1);
  35. }
  36. cout << num << endl;
  37. }while (!num.empty()); //字串不為空代表可以繼續減
  38. }
  39. return 0;
  40. }
  41.  
Success #stdin #stdout 0.01s 2860KB
stdin
50
0
stdout
49
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
32
31
30
29
28
27
26
25
24
23
22
21
20
19
18
17
16
15
14
13
12
11
10
9
8
7
6
5
4
3
2
1