fork(1) download
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <string>
  4. using namespace std;
  5. string a;
  6. long long len;
  7. void makepalin()
  8. {
  9. for(int i = 0, j = len-1; i<len/2; ++i, --j)
  10. {
  11. a[j] = a[i];
  12. }
  13. }
  14. void increment(int l, int u)
  15. {
  16. int flag = 0;
  17. while(a[l]=='9'&& a[u]=='9')
  18. {
  19. a[l]='0';a[u]='0';
  20. if(l==0 || u==(len-1))
  21. {
  22. flag = 1;
  23. break;
  24. }
  25. --l;
  26. ++u;
  27. }
  28. if(l == len/2)
  29. ++a[l];
  30. else if(!flag)
  31. {
  32. ++a[l];
  33. ++a[u];
  34. }
  35. else if(flag)
  36. {
  37. string m(len, '0');
  38. if(m==a)
  39. {
  40. a = a + '1';
  41. ++a[0];
  42. }
  43. }
  44. }
  45.  
  46. int main()
  47. {
  48. long t;
  49. scanf("%d", &t);
  50. while(t--)
  51. {
  52. cin>>a;
  53. string z = a;
  54. len = a.size();
  55. int i = len/2-1;
  56. int j = len/2;
  57. int k = len/2;
  58. makepalin();
  59. if(a>z)
  60. {
  61. cout<<a<<"\n";
  62. continue;
  63. }
  64. if(len%2)
  65. {
  66. increment(j, k);
  67. cout<<a<<"\n";
  68. }
  69. else
  70. {
  71. increment(i, j);
  72. cout<<a<<"\n";
  73. }
  74.  
  75. }
  76. return 0;
  77. }
Success #stdin #stdout 0s 3468KB
stdin
9
139999921
273
372
189992
199982
999
9999
0
120
stdout
139999931
282
373
190091
199991
1001
10001
1
121