fork download
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. class Number
  5. {
  6. private:
  7. int number[100];
  8. int size;
  9. int iterations;
  10. public:
  11. Number(int n)
  12. {
  13. size = 0;
  14. iterations = 0;
  15. while(n != 0)
  16. {
  17. number[size++] = n % 10;
  18. n /= 10;
  19. }
  20. }
  21.  
  22. void reverseAndAdd()
  23. {
  24. int source[size];
  25. for(int i=0;i<size;i++) source[i] = number[i];
  26. for(int i=0;i<size;i++)
  27. {
  28. number[i] += source[size-i-1];
  29. if(number[i] > 9)
  30. {
  31. if(i == size-1)
  32. {
  33. number[size] = 0;
  34. size++;
  35. }
  36. number[i] -= 10;
  37. number[i+1] += 1;
  38. }
  39. }
  40. iterations++;
  41. return;
  42. }
  43. bool isPalindrome()const
  44. {
  45. bool flag = true;
  46. for(int i=0;i<size/2;i++)
  47. {
  48. if(number[i] != number[size-i-1])
  49. {
  50. flag = false;
  51. break;
  52. }
  53. }
  54. return flag;
  55. }
  56. friend ostream& operator<< (ostream& out, const Number &n)
  57. {
  58. out << n.iterations << ' ';
  59. for(int i=n.size;i>=0;i--) out << n.number[i];
  60. out << '\n';
  61. return out;
  62. }
  63. };
  64.  
  65. int main()
  66. {
  67. cin.ignore();
  68. int n;
  69. while(cin>>n)
  70. {
  71. Number number(n);
  72. number.reverseAndAdd();
  73. while(!number.isPalindrome()) number.reverseAndAdd();
  74. cout << number;
  75. }
  76. return 0;
  77. }
Success #stdin #stdout 0.01s 5264KB
stdin
Standard input is empty
stdout
Standard output is empty