fork(1) download
  1. #include<iostream>
  2. #include<algorithm>
  3. #include<vector>
  4. using namespace std;
  5. bool check(vector<int> v){
  6. for(int i=0;i<v.size();i++){
  7. if(v[i]!=9){
  8. return false;
  9. }
  10. }
  11. return true;
  12. }
  13. void doe(vector<int> &v){
  14. int i;
  15. for(i=0;i<v.size();i++){
  16. if(v[i]==10){
  17. break;
  18. }
  19. }
  20. if(i==v.size()){
  21. return;
  22. }
  23. if(i==v.size()/2&&v.size()%2!=0){
  24. v[i]=0;
  25. ++v[i+1];
  26. ++v[i-1];
  27.  
  28. }
  29. else if(i>=v.size()/2&&v.size()%2==0){
  30. v[i]=0;
  31. v[i+1]++;
  32. }
  33. else if(i<v.size()/2){
  34. v[i]=0;
  35. v[i-1]++;
  36. }
  37. else if(i>v.size()/2){
  38. v[i]=0;
  39. v[i+1]++;
  40. }
  41. doe(v);
  42. }
  43. int main(){
  44. int t;
  45. cin>>t;
  46. while(t--){
  47. bool c=false;
  48. int n;
  49. cin>>n;
  50. vector<int > v;
  51. while(n!=0){
  52. v.push_back(n%10);
  53. n=n/10;
  54. }
  55. reverse(v.begin(),v.end());
  56. bool m=check(v);
  57. if(m==true){
  58. vector<int> o(v.size()+1);
  59. for(int i=0;i<o.size();i++){
  60. if(i==0||i==o.size()-1){
  61. o[i]=1;
  62. }
  63. else{
  64. o[i]=0;
  65. }
  66. }
  67. c=true;
  68. doe(v);
  69. int p=0;
  70. while(p<o.size()){
  71. cout<<o[p];
  72. p++;
  73. }
  74. cout<<endl;
  75. }
  76. else{
  77. if(v.size()%2==0){
  78. int i=v.size()/2-1;
  79. int j=v.size()/2;
  80. while(i>=0 && j<v.size()){
  81. if(v[i]==v[j]){
  82. i--;
  83. j++;
  84. }
  85. else{
  86. if(v[j]>v[i]){
  87. v[i]++;
  88. while(v[j]!=v[i]){
  89. v[j]--;
  90. }
  91. c=true;
  92. j++;
  93. i--;
  94. while(j<v.size()){
  95. v[j]=v[i];
  96. j++;
  97. i--;
  98. }
  99. doe(v);
  100. int p=0;
  101. while(p<v.size()){
  102. cout<<v[p];
  103. p++;
  104. }
  105. cout<<endl;
  106. }
  107. else{
  108. while(v[j]!=v[i]){
  109. v[j]++;
  110. }
  111. c=true;
  112. j++;
  113. i--;
  114. while(j<v.size()){
  115. v[j]=v[i];
  116. j++;
  117. i--;
  118. }
  119. doe(v);
  120. int p=0;
  121. while(p<v.size()){
  122. cout<<v[p];
  123. p++;
  124. }
  125. cout<<endl;
  126. }
  127. }
  128. }
  129. }
  130. else{
  131. int i=v.size()/2-1;
  132. int j=v.size()/2+1;
  133. int y=v.size()/2;
  134. while(i>=0 && j<v.size()){
  135. if(v[i]==v[j]){
  136. i--;
  137. j++;
  138. }
  139. else{
  140. if(v[i]>v[j]){
  141. while(v[j]!=v[i]){
  142. v[j]++;
  143.  
  144. }
  145. c=true;
  146. j++;
  147. i--;
  148. while(j<v.size()){
  149. v[j]=v[i];
  150. j++;
  151. i--;
  152. }
  153. doe(v);
  154. int p=0;
  155. while(p<v.size()){
  156. cout<<v[p];
  157. p++;
  158. }
  159. cout<<endl;
  160. }
  161. else{
  162. v[y]++;
  163. while(v[j]!=v[i]){
  164. v[j]--;
  165.  
  166. }
  167. c=true;
  168. j++;
  169. i--;
  170. while(j<v.size()){
  171. v[j]=v[i];
  172. j++;
  173. i--;
  174. }
  175. doe(v);
  176. int p=0;
  177. while(p<v.size()){
  178. cout<<v[p];
  179. p++;
  180. }
  181. cout<<endl;
  182.  
  183. }
  184.  
  185.  
  186. }
  187.  
  188.  
  189. }
  190. }
  191. }
  192. if(!c){
  193. if(v.size()%2==0){
  194. int i=v.size()/2;
  195. int j=v.size()/2-1;
  196. v[j]++;
  197. v[i]++;
  198. }
  199. else{
  200. int k=v.size()/2;
  201. v[k]++;
  202. }
  203. doe(v);
  204. int p=0;
  205. while(p<v.size()){
  206. cout<<v[p];
  207. p++;
  208. }
  209. cout<<endl;
  210. }
  211.  
  212. }
  213.  
  214. }
  215.  
Success #stdin #stdout 0s 16064KB
stdin
1
121
stdout
131