[C/C++] 프로젝트 오일러 #31 : 코인들의 합
영국에는 아래와 같은 동전 단위가 있습니다:• 1p, 2p, 5p, 10p, 20p, 50p, 1파운드(100p), 2파운드(200p)목표는 200펜스(2파운드)를 만들기 위해, 위 동전들을 활용한 서로 다른 조합의 수를 찾는 것입니다.조건:1. 동전은 필요한 만큼 반복적으로 사용할 수 있습니다.2. 순서는 중요하지 않습니다. (즉, {1p, 2p}는 {2p, 1p}와 동일한 조합으로 간주됩니다.)3. 중복된 조합을 제거한 고유한 조합의 수를 구해야 합니다. 이번문제는 재귀 함수를 만들어서 프로그램을 작성했습니다. 예를 들어서 200 파운드를 계산하기 위해서 첫번째 가장 큰 단위의 코인을 쓸 것인지부터 몇개를 쓸것인지 결정하여서 나머지 돈에 대해서 그 다음 단위의 코인을 이용하여 경우의 수를 따졌습니다...
2015. 3. 30.
[C/C++] 프로젝트 오일러 #29 서로 다른 n제곱 개수
이번 문제는 중복을 처리하는 문제이기는 하지만,숫자의 범위가 큰 까닭에, big integer를 써서 처리를 하든지, 아니면 무언가 다른 방도를 생각해서 해주어야 합니다. 서로 다른 n제곱 갯수를 구하기 위해서는 다음과 같은 생각을 좀 해주어야 합니다. 서로 다른, a, b (b > a) 에 대하여, \(a^m\), \(b^n\)이 갈은 수가 되기 위해서는 반드시, b는 a의 제곱승이어야 합니다. 그렇지 않다면, 같은 숫자가 나올 수가 없습니다. 이것을 토대로 해서 프로그램을 작성해보았습니다. 전반부 프로그램은 제곱수가 아닌 a 에 대하여 \(a^k\)을 모두 체크하고, 그 때의 연산 결과를 1승만 가능한 경우, 2승까지 가능한 경우, 3승까지 가능한 경우 등등으로 나누어서 그 출력값을 미리 v란 배열..
2015. 3. 7.