2019. 6. 1. 10:11
728x90

Lattice paths

Problem 15

Starting in the top left corner of a 2×2 grid, and only being able to move to the right and down, there are exactly 6 routes to the bottom right corner.

How many such routes are there through a 20×20 grid?

20×20크기의 격자에서 왼쪽 위 시작 점부터 오른쪽 아래 끝 점까지 도달 할 수 있는 경로의 수를 구하기.
목표 지점의 왼쪽까지 갈 수 있는 경로와 위쪽까지 갈 수 있는 경로의 합으로 답을 구할 수 있다.
문제에서는 격자의 크기를 면의 수로 표현하고 있지만 실제 처리는 모서리를 기준으로 하므로 1칸 더 크게 계산한다.

1

1

1

1

2

3

1

3

6



728x90

'공부 > 문제풀기' 카테고리의 다른 글

프로젝트 오일러 문제 17  (0) 2019.06.02
프로젝트 오일러 문제 16  (0) 2019.06.02
프로젝트 오일러 문제 14  (0) 2019.01.05
프로젝트 오일러 문제 13  (0) 2018.12.23
프로젝트 오일러 문제 12  (0) 2018.11.24
Posted by 아야카
2019. 1. 5. 06:08
728x90

Longest Collatz sequence

Problem 14

The following iterative sequence is defined for the set of positive integers:

n → n/2 (n is even)
n → 3n + 1 (n is odd)

Using the rule above and starting with 13, we generate the following sequence:

13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1

It can be seen that this sequence (starting at 13 and finishing at 1) contains 10 terms. Although it has not been proved yet (Collatz Problem), it is thought that all starting numbers finish at 1.

Which starting number, under one million, produces the longest chain?

NOTE: Once the chain starts the terms are allowed to go above one million.

어떠한 수 n에 대해 콜라츠 추측을 거치는 횟수는 동일하다. 그리고 수의 범위는 100만. 
문제 풀이의 목적은 어디까지나 횟수를 구하는 것이므로 각 수에 대한 콜타츠 추측 횟수를 기록하면 된다. 
예를들어 arrNum 배열이 있다고 할 때 

arrNum[2]는 2 -> 1로 1회.
arrNum[3]는 3 -> 10 -> 5 -> 16 -> 8 -> 4 -> 2로 6회를 거치고 2는 체인이 1회므로 3의 체인은 7회.
arrNum[6]은 6 -> 3으로 1회를 거치고, 3은 체인이 7회이므로 6의 체인은 8회

이와 같은 방식으로 진행하면 100만까지의 모든 수에 대한 콜라츠 추측을 빠르게 구할 수 있다.
재귀함수를 이용한다면 arrNum[3]의 과정에서 3, 10, 5, 16, 8, 4의 체인 값을 바로 파악할 수 있어 연산 시간을 조금 더 줄일 수 있게 된다.



728x90

'공부 > 문제풀기' 카테고리의 다른 글

프로젝트 오일러 문제 16  (0) 2019.06.02
프로젝트 오일러 문제 15  (0) 2019.06.01
프로젝트 오일러 문제 13  (0) 2018.12.23
프로젝트 오일러 문제 12  (0) 2018.11.24
프로젝트 오일러 문제 11  (0) 2018.11.18
Posted by 아야카
2018. 12. 23. 20:42
728x90

Large sum

Problem 13

Work out the first ten digits of the sum of the following one-hundred 50-digit numbers.


50자리 수 100개를 모두 더했을 때의 앞의 열자리 수 구하기 문제.

파이썬 같은 언어에서는 그냥 변수를 모두 더해줘서 앞의 10개만 읽어주면 되지만 C++에서는 일반적인 변수에서는 그리할 수 없으므로 별도의 방법을 모색해야 한다.



728x90

'공부 > 문제풀기' 카테고리의 다른 글

프로젝트 오일러 문제 15  (0) 2019.06.01
프로젝트 오일러 문제 14  (0) 2019.01.05
프로젝트 오일러 문제 12  (0) 2018.11.24
프로젝트 오일러 문제 11  (0) 2018.11.18
프로젝트 오일러 문제 10  (0) 2018.11.12
Posted by 아야카
2018. 11. 24. 19:33
728x90

Highly divisible triangular number

Problem 12

The sequence of triangle numbers is generated by adding the natural numbers. So the 7th triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be:

1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

Let us list the factors of the first seven triangle numbers:

 1: 1
 3: 1,3
 6: 1,2,3,6
10: 1,2,5,10
15: 1,3,5,15
21: 1,3,7,21
28: 1,2,4,7,14,28

We can see that 28 is the first triangle number to have over five divisors.

What is the value of the first triangle number to have over five hundred divisors?

약수의 개수가 500개 이상인 최초의 정수는 무엇인지 구하는 문제.



728x90

'공부 > 문제풀기' 카테고리의 다른 글

프로젝트 오일러 문제 14  (0) 2019.01.05
프로젝트 오일러 문제 13  (0) 2018.12.23
프로젝트 오일러 문제 11  (0) 2018.11.18
프로젝트 오일러 문제 10  (0) 2018.11.12
프로젝트 오일러 문제 9  (0) 2018.11.12
Posted by 아야카
2018. 11. 18. 23:14
728x90

Largest product in a grid

Problem 11

In the 20×20 grid below, four numbers along a diagonal line have been marked in red.

08 02 22 97 38 15 00 40 00 75 04 05 07 78 52 12 50 77 91 08
49 49 99 40 17 81 18 57 60 87 17 40 98 43 69 48 04 56 62 00
81 49 31 73 55 79 14 29 93 71 40 67 53 88 30 03 49 13 36 65
52 70 95 23 04 60 11 42 69 24 68 56 01 32 56 71 37 02 36 91
22 31 16 71 51 67 63 89 41 92 36 54 22 40 40 28 66 33 13 80
24 47 32 60 99 03 45 02 44 75 33 53 78 36 84 20 35 17 12 50
32 98 81 28 64 23 67 10 26 38 40 67 59 54 70 66 18 38 64 70
67 26 20 68 02 62 12 20 95 63 94 39 63 08 40 91 66 49 94 21
24 55 58 05 66 73 99 26 97 17 78 78 96 83 14 88 34 89 63 72
21 36 23 09 75 00 76 44 20 45 35 14 00 61 33 97 34 31 33 95
78 17 53 28 22 75 31 67 15 94 03 80 04 62 16 14 09 53 56 92
16 39 05 42 96 35 31 47 55 58 88 24 00 17 54 24 36 29 85 57
86 56 00 48 35 71 89 07 05 44 44 37 44 60 21 58 51 54 17 58
19 80 81 68 05 94 47 69 28 73 92 13 86 52 17 77 04 89 55 40
04 52 08 83 97 35 99 16 07 97 57 32 16 26 26 79 33 27 98 66
88 36 68 87 57 62 20 72 03 46 33 67 46 55 12 32 63 93 53 69
04 42 16 73 38 25 39 11 24 94 72 18 08 46 29 32 40 62 76 36
20 69 36 41 72 30 23 88 34 62 99 69 82 67 59 85 74 04 36 16
20 73 35 29 78 31 90 01 74 31 49 71 48 86 81 16 23 57 05 54
01 70 54 71 83 51 54 69 16 92 33 48 61 43 52 01 89 19 67 48

The product of these numbers is 26 × 63 × 78 × 14 = 1788696.

What is the greatest product of four adjacent numbers in the same direction (up, down, left, right, or diagonally) in the 20×20 grid?

20x20 격자 속에서 한 방향으로 4개 연속 이어진 수의 곱이 가장 큰 수는 무엇인가.

8방향 탐색에 대해 묻는 문제다. 다만 곱셈을 구하는 문제이므로 4방향만 탐색해도 된다. 또, 연속된 4개의 수가 필요하므로 탐색범위는 0~19가 아닌 0~16으로 조정된다.


728x90

'공부 > 문제풀기' 카테고리의 다른 글

프로젝트 오일러 문제 13  (0) 2018.12.23
프로젝트 오일러 문제 12  (0) 2018.11.24
프로젝트 오일러 문제 10  (0) 2018.11.12
프로젝트 오일러 문제 9  (0) 2018.11.12
프로젝트 오일러 문제 8  (0) 2018.11.11
Posted by 아야카
2018. 11. 12. 00:08
728x90

Summation of primes

Problem 10

The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.

Find the sum of all the primes below two million.

에라토스테네스의 체를 이용한 소거법으로 합성수를 제거 후 합산하는 방법을 사용한다. 



728x90

'공부 > 문제풀기' 카테고리의 다른 글

프로젝트 오일러 문제 12  (0) 2018.11.24
프로젝트 오일러 문제 11  (0) 2018.11.18
프로젝트 오일러 문제 9  (0) 2018.11.12
프로젝트 오일러 문제 8  (0) 2018.11.11
프로젝트 오일러 문제 7  (0) 2018.11.11
Posted by 아야카
2018. 11. 12. 00:00
728x90

Special Pythagorean triplet

Problem 9

A Pythagorean triplet is a set of three natural numbers, a < b < c, for which,

a2 + b2 = c2

For example, 32 + 42 = 9 + 16 = 25 = 52.

There exists exactly one Pythagorean triplet for which a + b + c = 1000.
Find the product abc.

a+b+c=1000이 되는 피타고라스 수의 쌍을 찾아 세 수의 곱을 구하는 문제.
당연하지만 a, b, c는 모두 자연수다.


728x90

'공부 > 문제풀기' 카테고리의 다른 글

프로젝트 오일러 문제 11  (0) 2018.11.18
프로젝트 오일러 문제 10  (0) 2018.11.12
프로젝트 오일러 문제 8  (0) 2018.11.11
프로젝트 오일러 문제 7  (0) 2018.11.11
프로젝트 오일러 문제 6  (0) 2018.11.11
Posted by 아야카
2018. 11. 11. 23:54
728x90

Largest product in a series

Problem 8

The four adjacent digits in the 1000-digit number that have the greatest product are 9 × 9 × 8 × 9 = 5832.

73167176531330624919225119674426574742355349194934
96983520312774506326239578318016984801869478851843
85861560789112949495459501737958331952853208805511
12540698747158523863050715693290963295227443043557
66896648950445244523161731856403098711121722383113
62229893423380308135336276614282806444486645238749
30358907296290491560440772390713810515859307960866
70172427121883998797908792274921901699720888093776
65727333001053367881220235421809751254540594752243
52584907711670556013604839586446706324415722155397
53697817977846174064955149290862569321978468622482
83972241375657056057490261407972968652414535100474
82166370484403199890008895243450658541227588666881
16427171479924442928230863465674813919123162824586
17866458359124566529476545682848912883142607690042
24219022671055626321111109370544217506941658960408
07198403850962455444362981230987879927244284909188
84580156166097919133875499200524063689912560717606
05886116467109405077541002256983155200055935729725
71636269561882670428252483600823257530420752963450

Find the thirteen adjacent digits in the 1000-digit number that have the greatest product. What is the value of this product?

연속으로 이어지는 1000자리 수에서 연속되는 13개의 정수를 곱했을 때 가장 큰 수를 구하는 문제.
13개의 수를 곱하되 0이 나올 경우에는 그 근처에 있는 수는 결과가 모두 0이 되므로 일정량만큼 건너뛰는게 연산량을 줄이는데 도움이 된다.
범위가 13개일 경우 최대 값은 2조 5천억에 가까우므로 때문에 C++에서는 long long int를 사용했다.



728x90

'공부 > 문제풀기' 카테고리의 다른 글

프로젝트 오일러 문제 10  (0) 2018.11.12
프로젝트 오일러 문제 9  (0) 2018.11.12
프로젝트 오일러 문제 7  (0) 2018.11.11
프로젝트 오일러 문제 6  (0) 2018.11.11
프로젝트 오일러 문제 5  (0) 2018.11.11
Posted by 아야카