• Source
    1. #include <iostream>
    2. #include <string>
    3. using namespace std;
    4.  
    5. int arr[15];
    6. void StrToArr (string xau)
    7. {
    8. for (int i=0; i<xau.length(); i++)
    9. {
    10. int tmp = xau[i]-'0';
    11. arr[i+1]=tmp; //Start: 1->n;
    12. }
    13. }
    14.  
    15. int check_Smtr (int arr[], int n)
    16. {
    17. for (int i=1, j=n; i<=n, j>=1; i++, j--)
    18. {
    19. if (i>j) break;
    20. if (arr[i]!=arr[j]) return 0;
    21. }
    22. return 1;
    23. }
    24.  
    25. int arr_Smtr[15]; //Symmetry;
    26. void Find_Smtr (int arr[], int n)
    27. {
    28. for (int i=1; i<=n; i++)
    29. arr_Smtr[i]=arr[i];
    30.  
    31. while (1)
    32. {
    33. if (check_Smtr (arr_Smtr, n)==1) break;
    34. for (int i=1, j=n; i<=n, j>=1; i++, j--)
    35. {
    36. if (i>=j) break;
    37. if (arr_Smtr[i]>=arr_Smtr[j])
    38. {
    39. arr_Smtr[j] = arr_Smtr[i];
    40. }
    41. else
    42. {
    43. arr_Smtr[j] = arr_Smtr[i];
    44. int tmp = (arr_Smtr[j-1]+1)/10;
    45. arr_Smtr[j-1]++;
    46. if (arr_Smtr[j-1]>=10)
    47. {
    48. tmp = 1;
    49. arr_Smtr[j-1]%=10;
    50. }
    51. else
    52. {
    53. tmp = 0;
    54. arr_Smtr[j-1]%=10;
    55. }
    56. if (tmp!=0)
    57. {
    58. int k=j-1;
    59. while (tmp!=0)
    60. {
    61. arr_Smtr[k-1]++;
    62. if (arr_Smtr[k-1]>=10)
    63. {
    64. tmp = 1;
    65. arr_Smtr[k-1]%=10;
    66. }
    67. else
    68. {
    69. tmp = 0;
    70. arr_Smtr[k-1]%=10;
    71. }
    72. k--;
    73. }
    74. }
    75. }
    76. }
    77. }
    78. }
    79.  
    80. long ArrToNum (int arr[], int n)
    81. {
    82. long S=0;
    83. for (int i=1; i<=n; i++)
    84. {
    85. S+=arr[i];
    86. if (i!=n) S*=10;
    87. }
    88. return S;
    89. }
    90.  
    91. int main ()
    92. {
    93. string xau;
    94. while (1)
    95. {
    96. cin>>xau;
    97. if (xau=="0") break;
    98. StrToArr (xau);
    99. int n = xau.length();
    100. Find_Smtr (arr, n);
    101. long p1 = ArrToNum (arr, n);
    102. long p2 = ArrToNum (arr_Smtr, n);
    103. cout<<p2-p1<<endl;
    104. }
    105. return 0;
    106. }