fork(11) download
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<iostream>
  4. #include<algorithm>
  5. #define L 1000001
  6. using namespace std;
  7. char a[L];
  8. int main()
  9. {
  10.  
  11. int t,i,j,x;
  12. scanf("%d",&t);
  13. while(t--)
  14. {
  15. scanf("%s",a);
  16. x=strlen(a);
  17. int mid,flag=0,nine=1;
  18. for(i=0;i<x;i++)
  19. {
  20. if(a[i]!='9')
  21. {
  22. nine=0;
  23. break;
  24. }
  25. }
  26. if(strlen(a)%2!=0)
  27. i=x/2-1,j=x/2+1,mid=x/2;
  28. else
  29. i=x/2-1,j=i+1,mid=i;
  30. while(i>=0)
  31. {
  32. if(a[i]>a[j])
  33. {
  34. flag=1;
  35. break;
  36. }
  37. i--;
  38. j++;
  39. }
  40. if(!flag)
  41. {
  42. //cout<<"old: a[mid]="<<a[mid]<<endl;
  43. if(a[mid]!='9')
  44. a[mid]=(char)((int)a[mid]+1);
  45.  
  46. else
  47. {
  48. while(a[mid]=='9')
  49. {
  50. a[mid--]='0';
  51. }
  52. a[mid]=(char)((int)a[mid]+1);
  53. }
  54. }
  55. if(nine)
  56. {
  57. printf("1");
  58. if(x%2!=0 && x>1)
  59. {
  60. printf("%.*s", strlen(a)/2+1,a);
  61. reverse(&a[0], &a[x]);
  62. printf("%.*s", strlen(a)-(strlen(a)/2+1),a+strlen(a)/2+2);
  63. }
  64. else
  65. {
  66. printf("%.*s", strlen(a)/2,a);
  67. reverse(&a[0], &a[x]);
  68. printf("%.*s", strlen(a)-(strlen(a)/2),a+strlen(a)/2+1);
  69. }
  70. printf("1\n");
  71. continue;
  72. }
  73.  
  74.  
  75. if(x%2!=0)
  76. {
  77. printf("%.*s", strlen(a)/2+1,a);
  78. reverse(&a[0], &a[x]);
  79. printf("%.*s\n", strlen(a)-(strlen(a)/2+1),a+strlen(a)/2+1);
  80. }
  81. else
  82. {
  83. if(a[x/2-1]<a[x/2] && flag==1)
  84. a[x/2-1]=(char)((int)a[x/2-1]+1);
  85. printf("%.*s", strlen(a)/2,a);
  86. reverse(&a[0], &a[x]);
  87. printf("%.*s\n", strlen(a)-(strlen(a)/2),a+strlen(a)/2);
  88. }
  89. }
  90. return 0;
  91. }
Success #stdin #stdout 0s 3832KB
stdin
1
123
stdout
131