Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2019
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. #include <vector>
  2. #include <map>
  3. #include <algorithm>
  4. #include <iostream>
  5.  
  6. typedef std::vector<unsigned int> BigNumber;
  7. std::map<BigNumber, unsigned int> finalNumber;
  8.  
  9. bool isLychrel(unsigned int x, unsigned int maxIte) {
  10. BigNumber number;
  11. while (x > 0) {
  12. number.push_back(x % 10);
  13. x /= 10;
  14. }
  15. for (unsigned int ite = 0; ite < maxIte; ite++) {
  16. auto reverse = number;
  17. std::reverse(reverse.begin(), reverse.end());
  18. if (number == reverse) {
  19. finalNumber[number]++;
  20. return false;
  21. }
  22. auto sum = number;
  23. unsigned int carry = 0;
  24. for (size_t digit = 0; digit < number.size(); digit++) {
  25. sum[digit] += reverse[digit] + carry;
  26. if (sum[digit] >= 10) {
  27. sum[digit] -= 10;
  28. carry = 1;
  29. } else {
  30. carry = 0;
  31. }
  32. }
  33. if (carry > 0) {
  34. sum.push_back(carry);
  35. }
  36. number = std::move(sum);
  37. }
  38. return true;
  39. }
  40.  
  41. int main() {
  42. unsigned int ites = 60;
  43. unsigned int N;
  44. std::cin >> N;
  45.  
  46. unsigned int count = 0;
  47. for (unsigned int i = 0; i <= N; i++) {
  48. if (isLychrel(i, ites)) {
  49. count++;
  50. }
  51. }
  52. unsigned int bestCnt = 0;
  53. BigNumber bestNum;
  54. for (auto f : finalNumber) {
  55. if (bestCnt < f.second) {
  56. bestCnt = f.second;
  57. bestNum = f.first;
  58. }
  59. }
  60. std::reverse(bestNum.begin(), bestNum.end());
  61. for (auto digit : bestNum) {
  62. std::cout << digit;
  63. }
  64. std::cout << " " << bestCnt << std::endl;
  65. return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement