fork download
  1. // By Riiven
  2.  
  3. #include <bits/stdc++.h>
  4. using namespace std;
  5.  
  6. #define ll long long
  7. #define scanInt(i) scanf("%d",&i)
  8. #define scanStr(i) scanf("%s",&i)
  9. #define scanLong(i) scanf("%lld",&i)
  10. #define printInt(i) printf("%d\n",i)
  11. #define printLong(i) printf("%lld\n",i)
  12. #define printStr(i) printf("%s\n",i)
  13. #define vci vector<int>
  14. #define vcll vector<long long>
  15. #define pb push_back
  16. #define MOD 100000007
  17.  
  18. void swap(ll *a,ll *b){ll temp = *a; *a = *b; *b = temp;}
  19.  
  20. int main() {
  21. //freopen("input.txt","r",stdin);
  22. int t;
  23. scanInt(t);
  24. while(t--){
  25. char s[1000001];
  26. cin>>s;
  27.  
  28. int len = strlen(s);
  29. // calculating mid
  30. int mid,n1,n2;
  31. if(len %2 == 0){
  32. n2 = len / 2;
  33. n1 = n2-1;
  34. }else{
  35. mid = len / 2;
  36. n1 = mid - 1;
  37. n2 = mid + 1;
  38. }
  39. // 1. case if all digits are 9 or given number are palindrome
  40. int l = 0;
  41. int r = len-1;
  42. bool flag_palin = true;
  43. bool flag_all9 = true;
  44. while(l<=r){
  45. if(s[l] != s[r]){
  46. flag_palin = false;
  47. flag_all9 = false;
  48. }
  49. if(s[l] == s[r] && s[l] != '9'){
  50. flag_all9 = false;
  51. }
  52. l++;
  53. r--;
  54. }
  55.  
  56. if(flag_palin){ // if given number are palindrome
  57. if(flag_all9){ // if all digits are 9
  58. s[0] = '1';
  59. int i;
  60. for(i=1;i<len;i++)
  61. s[i] = '0';
  62. s[i] = '1';
  63. s[i+1] = '\0';
  64. cout<<s<<endl;
  65. }else{
  66. if(len % 2 == 0){
  67. if(s[n1] == '9'){
  68. while(s[n1] == '9'){
  69. s[n1] = '0';
  70. s[n2] = '0';
  71. n1--;
  72. n2++;
  73. }
  74. }
  75. s[n1] = (char)(s[n1]+1);
  76. s[n2] = s[n1];
  77. cout<<s<<endl;
  78. }else{
  79. if(len == 1){
  80. s[0] = (char)(s[0]+1);
  81. if(s[0] == '0'){
  82. s[0] = '1';
  83. s[1] = '1';
  84. }
  85. }else{
  86. if(s[mid] == '9'){
  87. s[mid] = '0';
  88. while(s[n1] == '9'){
  89. s[n1] = '0';
  90. s[n2] = '0';
  91. n1--;
  92. n2++;
  93. }
  94. s[n1] = (char)(s[n1]+1);
  95. s[n2] = (char)(s[n2]+1);
  96. }else{
  97. s[mid] = (char)(s[mid]+1);
  98. }
  99. }
  100. cout<<s<<endl;
  101. }
  102. }
  103. }else{
  104. // if given number are not palindrome
  105. while(s[n1] == s[n2]){
  106. n1--;
  107. n2++;
  108. }
  109. if(len % 2 == 0){
  110. if(s[n1]<s[n2]){
  111. s[n1] = (char)(s[n1]+1);
  112. }
  113. while(n1 >= 0 && n2 < len){
  114. s[n2] = s[n1];
  115. n1--;
  116. n2++;
  117. }
  118. cout<<s<<endl;
  119. }else{
  120. if(s[n1]<s[n2]){
  121. if(s[mid] == '9'){
  122. int temp = mid;
  123. while(s[temp] == '9'){
  124. s[temp] = '0';
  125. temp--;
  126. }
  127. s[temp] = (char)(s[temp]+1);
  128. }else{
  129. s[mid] = (char)(s[mid]+1);
  130. }
  131. }
  132. n1 = mid - 1;
  133. n2 = mid + 1;
  134. while(n1 >= 0 && n2 < len){
  135. s[n2] = s[n1];
  136. n1--;
  137. n2++;
  138. }
  139. cout<<s<<endl;
  140. }
  141. }
  142. }
  143.  
  144. return 0;
  145. }
  146.  
  147.  
Success #stdin #stdout 0s 4512KB
stdin
1
12365894
stdout
12366321