fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. string hieu(string s, int k)
  5. {
  6. string t = to_string(k);
  7. int i = s.size() - 1, j = t.size() - 1, nho = 0;
  8.  
  9. while(j >= 0 || nho)
  10. {
  11. int x = s[i] - '0' - nho;
  12. int y = (j >= 0 ? t[j] - '0' : 0);
  13.  
  14. if(x < y){
  15. x += 10;
  16. nho = 1;
  17. }
  18. else nho = 0;
  19.  
  20. s[i] = char(x - y + '0');
  21. i--;
  22. j--;
  23. }
  24.  
  25. while(i >= 0)
  26. {
  27. int x = s[i] - '0' - nho;
  28. if(x < 0){
  29. s[i] = '9';
  30. nho = 1;
  31. }
  32. else{
  33. s[i] = char(x + '0');
  34. nho = 0;
  35. }
  36. i--;
  37. }
  38.  
  39. int p = 0;
  40. while(p + 1 < s.size() && s[p] == '0') p++;
  41. return s.substr(p);
  42. }
  43.  
  44. bool check(string s, int k){
  45. string t = to_string(k);
  46. if(s.size() < t.size()) return true;
  47. else if(s.size() == t.size()){
  48. for(int i = 0; i < s.size(); i++){
  49. if(t[i] > s[i]) return true;
  50. }
  51. }
  52.  
  53. return false;
  54. }
  55. int main()
  56. {
  57. ios_base::sync_with_stdio(0);
  58. cout.tie(0);cin.tie(0);
  59.  
  60. string s; cin >> s;
  61. for(int k = 9 * 100; k >= 1; k--){
  62. if(check(s, k)) continue;
  63. string m = hieu(s, k);
  64.  
  65. int sum = 0;
  66. for(int i = 0; i < m.size(); i++) sum += m[i] - '0';
  67.  
  68. if(sum == k){
  69. cout << m;
  70. return 0;
  71. }
  72. }
  73. cout << 0;
  74.  
  75.  
  76. }
  77.  
  78.  
  79.  
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
Success #stdin #stdout 0.01s 5284KB
stdin
Standard input is empty
stdout
Standard output is empty