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. int main() {
  19. int t;
  20. cin >> t;
  21.  
  22. while (t--) {
  23. string k;
  24. cin >> k;
  25.  
  26. int size = k.length();
  27. int center = size / 2;
  28.  
  29. if (size%2) {
  30. string sub = k.substr(0, center);
  31. string back_half = k.substr(center+1, center);
  32. string rev = revString(sub);
  33.  
  34. if (rev > back_half) sub += k[center] + rev;
  35. else {
  36. sub = to_string( stoi( sub+k[center]) + 1);
  37. rev = revString(sub);
  38.  
  39. if (sub.back() == '0' && sub.front() == '1') {
  40. sub.pop_back();
  41. sub += revString(sub);
  42. }
  43. else {
  44. sub.pop_back();
  45. sub += rev;
  46. }
  47. }
  48. k = sub;
  49. }
  50. else {
  51. string sub = k.substr(0, center);
  52. string back_half = k.substr(center, center);
  53. string rev = revString(sub);
  54.  
  55. if (rev > back_half) sub += rev;
  56. else {
  57. int tmp = stoi(sub) + 1;
  58. sub = to_string(tmp);
  59. rev = revString(sub);
  60.  
  61. if (sub.back() == '0' && sub.front() == '1') {
  62. sub.pop_back();
  63. sub += rev;
  64. }
  65. else
  66. sub += rev;
  67. }
  68. k = sub;
  69. }
  70. cout << k << endl;
  71. }
  72. return 0;
  73. }
  74.  
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
Standard output is empty