본문 바로가기

대칭수2

[C/C++] 프로젝트 오일러 #36 : 두개의 진법에서 대칭수 프로젝트 오일러 문제 #36 - “Double-base Palindromes”는 10진수와 2진수로 표현했을 때 모두 회문인 숫자를 찾는 문제입니다. 예를 들어, 585는 10진수로도 대칭수(585)이고 2진수로 변환했을 때도 대칭수(1001001)입니다. 이런 숫자들을 찾아 합계를 계산하고 그 결과를 출력하는 것이 문제에서 요구하는 바입니다. 대칭수인지 결정하는 방법과 대칭수를 만드는 것은 여러가지 방법이 있을 수 있습니다.이번 문제는 십진수에서 대칭수이면서 이진수에서 대칭수인 수를 찾아서 그 합을 구해야 하죠.  난이도 5%짜리 문제입니다.  (그만큼 어렵지 않다는 것이겠죠.) 사실 십진수 대칭수를 만드는 여러가지 방법이 있겠지만, 저는 약간 복잡하게 대칭수를 만들었습니다.  속도를 빠르게 하기 위한.. 2015. 4. 16.
4. 프로젝트 오일러 #4 : 가장 큰 대칭수 구하기 이번 문제는 간단하게 생각하면, 세자리수 a, b를 곱한 수가 대칭수인가 판단하면 된다고 할 수 있습니다. 그러나 그럴 경우 세자리수 x 세자리수의 갯수가 1억개정도 나오게 되죠. 그것에 대한 대칭수를 판단하는 것은 문제가 있을 수 있습니다. 그래서 제가 구현한 알고리즘은, 1) 세자리수 x 세자리수 해서 나올 수 있는 가장 큰 대칭수부터 차례대로 발생시키고 (최대 900개) 2) 그 수들이 세자리수의 곱으로 표현되는가 (최대 900개) 결국 첫번째와 두번째가 오더가 비슷하지 않는가 하겠지만, 실제로는 많은 차이가 있습니다. 첫번째 알고리즘은 최댓값을 구하는 과정이 다시 필요합니다. 그러나 두번째 알고리즘은 첫번째 매칭이 되는 결과가 최댓값이 됩니다. 프로그램을 표시하자면, 아래와 같습니다. 세자리수 곱.. 2014. 12. 19.
728x90