프로젝트 오일러 60
다섯 소수 중 어떤 두 개를 이어붙여도 소수가 되는 수 찾기
이 문제를 공략하는 기본 아이디어는 다음과 같다.
- 적정 범위의 소수 집합
ps1
을 미리 구한다. ps1
에서 두 수를 골라 앞/뒤로 이어붙여도 소수가 되는 쌍의 집합ps2
를 구한다.
내 이 세상 도처에서 쉴 곳을 찾아보았으나, 마침내 찾아낸, 컴퓨터가 있는 구석방보다 나은 곳은 없더라.
다섯 소수 중 어떤 두 개를 이어붙여도 소수가 되는 수 찾기
이 문제를 공략하는 기본 아이디어는 다음과 같다.
ps1
을 미리 구한다.ps1
에서 두 수를 골라 앞/뒤로 이어붙여도 소수가 되는 쌍의 집합 ps2
를 구한다.XOR 방식으로 암호화된 메시지 깨기
암호화 키가 영어 소문자 세 개로 되어 있으므로, aaa
부터 zzz
까지 모두 시도해본다 해도 경우의 수는 밖에 되지 않는다. 이 정도면 무차별 대입법으로 공략해도 충분할 것 같다.
나선모양 격자의 대각선상에 있는 소수의 비율 추적하기
문제 28에서 나선모양 행렬의 대각선 요소를 구하는 공식을 유도했다. 그때는 나선모양이 시계 방향으로 돌았고 여기서는 나선모양이 반시계 방향으로 돌아 방향이 다르지만 문제를 푸는 데 영향을 끼치지는 않는다.
제곱근 2의 연분수꼴 살펴보기
문제에 있는 의 연분수꼴 수식은 다음과 같다.
형태의 자연수에 대해 자릿수 합의 최대값 구하기
문제 16에서 만든 pow
함수를 이용하면 문제를 쉽게 풀 수 있다.
10000 미만의 라이크렐 수 (Lychrel number) 세기
숫자를 뒤집어서 더한 후 대칭수인지 확인해야 하므로 다음과 같이 숫자를 뒤집는 함수와 숫자가 대칭수인지 확인하는 함수를 미리 만들어 두면 문제를 푸는 데 도움이 될 것이다.
포커 게임에서 이긴 회수 구하기
이 문제를 푸는 데 수학적인 지식이나 통찰은 전혀 필요하지 않은 것으로 보였다. 그저 주어진 카드 패가 어떤 계급인지 판단하는 방법을 구현하고 계급에 따라 승패를 정해 1번 선수가 이긴 횟수를 구하기만 하면 되는 단순한 문제로 보였다. 이렇게 해도 답을 구하는 데는 전혀 문제가 없었지만, 마음에 들지 않았다. 패가 특정 계급인지 판단하는 여러 개의 함수와 연속된 조건문... 더 좋은 방법이 없을까?
영국에 와서 제일 먼저 해야 하는 일 중 하나가 은행 계좌 만들기였다. 영국에 오기 전 이주 담당자가 Lloyds와 Nat West 두 은행을 소개해 주었다. 특히 Lloyds를 선택할 경우 계좌를 신속하게 만들어주는 절차가 있다고 하며 매니저 전화번호와 메일주소까지 알려주었다. 그래서 나처럼 이주하는 사람들을 위해 미리 준비된 절차가 있을 거라 기대했다.
최근 사용한 파일 기능은 그리 자주 사용하는 편은 아니었다. 파일을 찾을 때 그 파일을 최근 열었는지 생각하기 보다는 직접 찾는 게 더 빠르다고 생각했다. IDE를 쓸 때는 소스 파일을 쉽게 찾을 수 있는 기능을 활용했다. 문서 작업을 할 때도 원하는 파일을 특정 디렉터리에서 빠르게 찾을 수 있었다. 아마도 문서 파일을 보관하는 디렉터리 구조도 복잡하지 않았고 파일도 많지 않았기 때문일 것이다.
일때 의 값이 1백만을 넘는 경우는 모두 몇 번?
이므로 , 의 범위는 각각 , 이다. 모든 , 조합에 대해 을 구한다 해도 경우의 수는 이므로 금방 구할 수 있다.