본문 바로가기
반응형

오일러프로젝트2

[C++]프로젝트 오일러 4번 문제&풀이 (세자리 수를 곱해 만들 수 있는 가장 큰 대칭수) 문제 앞에서부터 읽을 때나 뒤에서부터 읽을 때나 모양이 같은 수를 대칭수(palindrome)라고 부릅니다. 두 자리 수를 곱해 만들 수 있는 대칭수 중 가장 큰 수는 9009 (= 91 × 99) 입니다. 세 자리 수를 곱해 만들 수 있는 가장 큰 대칭수는 얼마입니까? 접근방법 1. 100 X 100 부터 999 X 999 까지 차례로 계산하되, 2. 각 자릿수를 벡터(vec) 값에 할당하여 비교하는 방식으로 대칭수를 구하고, 새로운 벡터(pal) 값에 저장한다. (로그를 사용하여 자릿 수를 계산한다.) 3. 벡터에 저장한 값 중, 최댓값이 우리가 구하고자 하는 값이다. #include #include #include #include using namespace std; int main() { vect.. 2020. 11. 18.
[프로젝트 오일러] 5번 문제 & 풀이 (1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수) Problem 5 1 ~ 10 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 2520입니다. 그러면 1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 얼마입니까? 처음 아이디어 이 문제는 최소공배수를 구하는 문제이다 숫자 4, 6의 경우, 이 때의 최대공약수(GCD)는 2, 최소공배수(LCM)는 12이고, 4 = GCD * 2, 6 = GCD * 3 에서 LCM = GCD * 2 * 3 = GCD * 2 X GCD * 3 / GCD 이다. 이 때, 추가로 숫자 7과의 최대공배수를 구하려면, 처음부터 다시 최대공약수&최소공배수를 구할 필요 없이, 앞서 구한 최소공배수인 12와 7 사의의 최소공배수를 구하면, 이 값이 4, 6, 7의 최소공배수가 된다. 같은 논리로, 1부터 차례대로 20.. 2020. 5. 30.
반응형