fork download
  1.  
  2. #include<stdio.h>
  3. #include<math.h>
  4. long long reverse(long long n)
  5. {
  6. unsigned long long no=0;
  7. while(n>0)
  8. {
  9. no=no*10 + n%10;
  10. n=n/10;
  11. }
  12. return no;
  13. }
  14.  
  15. long long generate(long long n)
  16. {
  17. unsigned long long gen;
  18. unsigned long long temp=n;
  19. int count=0,i;
  20. while(temp>0)
  21. {
  22. count++;
  23. temp=temp/10;
  24. }
  25. if(count==1||count==0)
  26. {
  27. if(n==9)
  28. return 11;
  29. n++;
  30. gen=n;
  31. return gen;
  32. }
  33. temp=n;
  34. unsigned long long n1=0,n2;
  35. for(i=0;i<count/2;i++)
  36. {
  37. n1=n1*10+temp%10;
  38. temp=temp/10;
  39. }
  40. n1=reverse(n1);
  41. if(count%2==0)
  42. {
  43. n2=temp;
  44. int count1=count/2;
  45. while(1)
  46. {
  47. int k=temp%10;
  48. int m=(n1/((int)(pow(10,(count1-1))+0.5)))%10;
  49. if(k<m)
  50. {
  51. n2++;
  52. break;
  53. }
  54. else if(k==m)
  55. {
  56. count1--;
  57. temp=temp/10;
  58. if(count1==0||temp==0)
  59. {
  60. n2++;
  61. break;
  62. }
  63. }
  64. else
  65. break;
  66. }
  67.  
  68. n1=reverse(n2);
  69. gen=n2*(int)(pow(10,count/2)+0.5)+n1;
  70. }
  71. else
  72. {
  73. int mid=temp%10;
  74. temp=temp/10;
  75. n2=temp;
  76. int count2=count/2;
  77. while(1)
  78. {
  79. int k=temp%10;
  80. int m=(n1/((int)(pow(10,(count2-1))+0.5)))%10;
  81. if(k<m)
  82. {
  83. mid++;
  84. break;
  85. }
  86. else if(k==m)
  87. {
  88. count2--;
  89. temp=temp/10;
  90. if(count2==0||temp==0)
  91. {
  92. mid++;
  93. break;
  94. }
  95. }
  96. else
  97. break;
  98.  
  99. }
  100. if(mid>9)
  101. {
  102. mid=0;
  103. n2++;
  104. }
  105. n1=reverse(n2);
  106. gen=n2*(int)(pow(10,count/2+1)+0.5) + mid*(int)(pow(10,count/2)+0.5) + n1;
  107. }
  108. return gen;
  109. }
  110.  
  111.  
  112.  
  113.  
  114. int main()
  115. {
  116. int test,i=0;
  117. scanf("%d",&test);
  118. unsigned long long n;
  119. while(i<test)
  120. {
  121. scanf("%llu",&n);
  122. long long k=generate(n);
  123. printf("\n%llu",k);
  124. i++;
  125. }
  126. return 0;
  127. }
Success #stdin #stdout 0.01s 1728KB
stdin
3
10001
2589625235
4589999789
stdout
10101
2589669852
4589999854