fork(1) download
  1. #include <iostream>
  2. #include <string>
  3. //#include <bits/stdc++.h>
  4.  
  5. using namespace std;
  6.  
  7. string revString(string n) {
  8. string res = "";
  9.  
  10. while (n.length()) {
  11. res += n.back();
  12. n.pop_back();
  13. }
  14.  
  15. return res;
  16. }
  17.  
  18. bool all9s(const string &s) {
  19. for (int i=0; i<s.length(); i++)
  20. if (s[i] != '9') return 0;
  21. return 1;
  22. }
  23.  
  24. int main() {
  25. int t;
  26. cin >> t;
  27.  
  28. while (t--) {
  29. string k;
  30. cin >> k;
  31.  
  32. if (all9s(k)) {
  33. cout << 1;
  34. for (int i=1; i<k.length(); i++)
  35. cout << 0;
  36. cout << 1 << endl;
  37. continue;
  38. }
  39.  
  40. int size = k.length();
  41. int center = k.length() / 2;
  42.  
  43. if (size%2) {
  44. string sub = k.substr(0, center);
  45. string back_half = k.substr(center+1, center);
  46. string rev = revString(sub);
  47.  
  48. if (rev > back_half) sub += k[center] + rev;
  49. else {
  50. sub = to_string( stoi( sub+k[center]) + 1);
  51. rev = revString(sub);
  52.  
  53. sub.pop_back();
  54. sub += rev;
  55.  
  56. }
  57. k = sub;
  58. }
  59. else {
  60. string sub = k.substr(0, center);
  61. string back_half = k.substr(center, center);
  62. string rev = revString(sub);
  63.  
  64. if (rev > back_half) sub += rev;
  65. else {
  66. int tmp = stoi(sub) + 1;
  67. sub = to_string(tmp);
  68. rev = revString(sub);
  69.  
  70. sub += rev;
  71. }
  72. k = sub;
  73. }
  74. cout << k << endl;
  75. }
  76. return 0;
  77. }
  78.  
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
Standard output is empty