Created
July 27, 2016 20:46
-
-
Save AlexBolotsin/87684f525fb342003f83f56f9a131e72 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
typedef unsigned long long int BigNumber; | |
BigNumber reverse(BigNumber number) | |
{ | |
BigNumber rem = 0; | |
while (number > 0) { | |
rem = (rem * 10) + (number % 10); | |
number = number / 10; | |
} | |
return rem; | |
} | |
bool isPalindrome(BigNumber num) { | |
return (num == reverse(num)); | |
} | |
bool isLychrelNum(int num, const int iterCount = 50) { | |
BigNumber temp = num; | |
BigNumber rev; | |
for (int i = 0; i < iterCount; i++) { | |
rev = reverse(temp); | |
if (isPalindrome(rev + temp)) | |
return false; | |
temp = temp + rev; | |
} | |
return true; | |
} | |
int main(int argc, char** argv) { | |
const int maxnum = 10000; | |
int counter = 0; | |
for (int i = 1; i <= maxnum; i++) { | |
if (isLychrelNum(i)) | |
counter++; | |
} | |
printf("There are %d Lychrel numbers from 1 to %d.\n", counter, maxnum); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment