nQueens 문제 풀다가 도저히 안돼서 다른거 풀어보겠음...ㅠㅠ
A palindromic number reads the same both ways.
The largest palindrome made from the product of two 2-digit numbers is 9009 = 91 × 99.
Find the largest palindrome made from the product of two 3-digit numbers.
#include <stdio.h>
int reverse(int n)
{
int reversed = 0;
while(n>0)
{
reversed = 10*reversed+ n%10;
n = n/10;
}
return reversed;
}
int isPalindrome(int n)
{
if(n==reverse(n))
return 1;
else
return 0;
}
int main(int argc, char* argv[])
{
int largestPalindrome = 0;
int a=999;
int b=0;
int db=0;
while(a>=100)
{
if(a%11==0)
{
b=999;
db=1;
}
else
{
b=990;
db=11;
}
while(b>=a)
{
if((a*b)<=largestPalindrome)
break;
if(isPalindrome(a*b))
largestPalindrome=a*b;
b=b-db;
}
a--;
}
printf("%d",largestPalindrome);
}
접근 방법
1. 처음에는 정수를 문자열로 변환해서 문자끼리 비교하는 뻘짓을 했음.
*Project Euler에서 제시한 생각에 의한 코드
문제출처 - https://projecteuler.net/problem=4
'Computer Science > Algorithm' 카테고리의 다른 글
[Algorithm/C] Project Euler. 10001st prime (0) | 2017.12.12 |
---|---|
[Linux] Terminator(창분할) (0) | 2017.12.07 |
[Algorithm/C] Project Euler. Smallest multiple (0) | 2017.12.04 |
[Algorithm/C] Project Euler. Largest prime factor (0) | 2017.12.02 |
[Algorithm/C] Project Euler. Even Fibonacci Numbers (0) | 2017.11.29 |