fork(1) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. string str,str2,original;
  4. int temp,n,carry,mid;
  5.  
  6. void calculate(){
  7. //cout << "inside calculate\n";
  8. while(str <= original && mid >= 0){
  9. //cout << "While loop, str is: " << str << "\n";
  10. if(carry){
  11. temp = (str[mid] - '0') + carry;
  12. }
  13. else{
  14. temp = (str[mid] - '0') + 1;
  15. }
  16.  
  17. if(temp > 9){
  18. carry = 1;
  19. str[mid] = '0';
  20. str[n-mid-1] = '0';
  21. }
  22. else{
  23. carry =0;
  24. str[mid] = temp + '0';
  25. str[n-mid-1] = temp + '0';
  26. }
  27. --mid;
  28. }
  29. }
  30. bool all_nine(string str){
  31. for(int i=0; i<str.length(); ++i){
  32. if(str[i] != '9'){
  33. return false;
  34. }
  35. }
  36. return true;
  37. }
  38. int main()
  39. {
  40. int t;
  41. cin >> t;
  42. while(t--){
  43. cin >> str;
  44. if(str.length() == 1){
  45. int temp = stoi(str);
  46. if(temp <= 8){
  47. cout << ++temp << "\n";
  48. continue;
  49. }
  50.  
  51. }
  52. while(str[0] == '0' && str.length()>=2){
  53. str.erase(0,1);
  54. }
  55.  
  56. str2 = str;
  57. original = str;
  58. n = str.length();
  59. mid = str.length()/2;
  60. while(mid < n){
  61. str2[mid] = str2[n-mid-1];
  62. ++mid;
  63. }
  64. mid = str.length()/2;
  65. str = str2;
  66. if(str > original){
  67. cout << str << "\n";
  68. }
  69. else{
  70. if( all_nine(str)){
  71. string ch = "1";
  72. string ans;
  73. for(int i=0; i<str.length()-1; ++i){
  74. ans += '0';
  75. }
  76. ans += '1';
  77. ans.insert(0,ch);
  78. cout << ans << "\n";;
  79. }
  80. else{
  81. carry=0;
  82. calculate();
  83. cout << str << "\n";
  84. }
  85. }
  86.  
  87. }
  88. return 0;
  89. }
  90. /*
  91. 5
  92. 0
  93. 00000000000000000000
  94. 2
  95. 000000000098
  96. 19995
  97. */
Success #stdin #stdout 0s 4512KB
stdin
5
0
00000000000000000000
2
000000000098
19995
stdout
1
1
3
99
20002