Computer Science/Algorithm

[Algorithm/C] Project Euler. Largest palindrome product

재오니소스 2017. 12. 5. 19:32

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