Advertisement
Guest User

Untitled

a guest
Dec 17th, 2014
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.60 KB | None | 0 0
  1. import java.math.BigInteger;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4.  
  5. public class Problem55 {
  6.  
  7. public static void main(String[] args) {
  8. int count = 0;
  9. for (int i = 0; i < 10000; i++) {
  10. if (isLychrel(new BigInteger(String.valueOf(i)), 0)) {
  11. count++;
  12. }
  13. }
  14. System.out.println(count);
  15. }
  16.  
  17. private static Map<BigInteger, Boolean> producesPalindromes = new HashMap<BigInteger, Boolean>();
  18.  
  19. private static boolean isLychrel(BigInteger number, int itt) {
  20. if (itt != 0 && isPalindrome(number)) {
  21. return false;
  22. }
  23.  
  24. if (itt == 50) {
  25. return true;
  26. }
  27.  
  28.  
  29. Boolean ret = producesPalindromes.get(number);
  30. if (itt != 0 && ret != null) {
  31. return !ret;
  32. }else{
  33. BigInteger nextNumber = getNext(number);
  34. boolean result = isLychrel(nextNumber, itt + 1);
  35. producesPalindromes.put(nextNumber, !result);
  36. return result;
  37. }
  38. }
  39.  
  40. private static BigInteger getNext(BigInteger number) {
  41. String str = String.valueOf(number);
  42. String reversed = new StringBuilder(str).reverse().toString();
  43. return new BigInteger(reversed).add(number);
  44. }
  45.  
  46. private static boolean isPalindrome(BigInteger number) {
  47. String str = number.toString();
  48. for (int i = 0; i < str.length() / 2; i++) {
  49. if (str.charAt(i) != str.charAt(str.length() - i - 1)) {
  50. return false;
  51. }
  52. }
  53. return true;
  54. }
  55.  
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement