fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define fi first
  4. #define se second
  5. #define ll long long
  6. #define ull unsigned long long
  7. #define pll pair<ll,ll>
  8. #define pb push_back
  9. #define emb emplace_back
  10. #define lg(x) __lg(x)
  11. #define all(s) s.begin(),s.end()
  12. #define name "test"
  13. #define Mask(i) (1LL<<i)
  14. #define testbit(mask, i) ((mask >> i) & 1LL)
  15. #define onBit(mask, i) (mask | (1LL << i))
  16. #define offBit(mask, i) (mask & ~(1LL << i))
  17. #define flipBit(mask, i) (mask ^ (1LL << i))
  18. #define showbit(mask, x) bitset<x>(mask)
  19. const ll mod = 1e9 + 7;
  20.  
  21. void add(ll &a, ll b){
  22. if((a += b) >= mod) a -= mod;
  23. }
  24.  
  25.  
  26. const ll inf = 1e18;
  27. const ll lim = 1e7 + 5;
  28. const ll N = 2e5 + 5;
  29.  
  30. string hieu(string s, ll k)
  31. {
  32. string t = to_string(k);
  33. int i = s.size() - 1, j = t.size() - 1, nho = 0;
  34.  
  35. while(j >= 0 || nho)
  36. {
  37. int x = s[i] - '0' - nho;
  38. int y = (j >= 0 ? t[j] - '0' : 0);
  39.  
  40. if(x < y){
  41. x += 10;
  42. nho = 1;
  43. }
  44. else nho = 0;
  45.  
  46. s[i] = char(x - y + '0');
  47. i--;
  48. j--;
  49. }
  50.  
  51. while(i >= 0)
  52. {
  53. int x = s[i] - '0' - nho;
  54. if(x < 0){
  55. s[i] = '9';
  56. nho = 1;
  57. }
  58. else{
  59. s[i] = char(x + '0');
  60. nho = 0;
  61. }
  62. i--;
  63. }
  64.  
  65. int p = 0;
  66. while(p + 1 < s.size() && s[p] == '0') p++;
  67. return s.substr(p);
  68. }
  69.  
  70. bool check(string s, ll k){
  71. string t = to_string(k);
  72. if(s.size() < t.size()) return true;
  73. else if(s.size() == t.size()){
  74. for(int i = 0; i < s.size(); i++){
  75. if(t[i] > s[i]) return true;
  76. }
  77. }
  78.  
  79. return false;
  80. }
  81. int main()
  82. {
  83. ios_base::sync_with_stdio(0);
  84. cout.tie(0);cin.tie(0);
  85. if(fopen(name".inp","r")){
  86. freopen(name".inp","r",stdin);
  87. freopen(name".out","w",stdout);
  88. }
  89.  
  90. string s; cin >> s;
  91. for(int k = 9 * 100; k >= 1; k--){
  92. if(check(s, k)) continue;
  93. string m = hieu(s, k);
  94.  
  95. int sum = 0;
  96. for(int i = 0; i < m.size(); i++) sum += m[i] - '0';
  97.  
  98. if(sum == k){
  99. cout << m;
  100. return 0;
  101. }
  102. }
  103. cout << 0;
  104.  
  105.  
  106. }
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.  
  116.  
Success #stdin #stdout 0.01s 5304KB
stdin
Standard input is empty
stdout
Standard output is empty