본문 바로가기
반응형

Programming/Project Euler108

[C/C++] 프로젝트 오일러 #90 두개의 주사위로 제곱수 만들기(전체 검색) 프로젝트 오일러 #90번 문제는 “두 개의 주사위로 제곱수를 만들기”라는 제목을 가지고 있습니다. 문제의 요약은 다음과 같습니다.1. 두 개의 6면체 주사위 세트를 사용하여 숫자 쌍을 만들어 특정한 제곱수를 표현하려고 합니다.2. 각 주사위는 0에서 9 사이의 숫자 중 6개를 선택하여 각 면에 새길 수 있습니다.3. 두 주사위를 굴려 나온 숫자 조합으로 제곱수 1, 4, 9, 16, 25, 36, 49, 64, 81을 표현해야 합니다.• 예를 들어, 01은 1의 제곱, 49는 7의 제곱을 의미합니다.4. 숫자 6과 9는 서로 교환 가능하다고 가정합니다.목표: 두 주사위에서 선택할 수 있는 숫자 조합을 정하여 위의 모든 제곱수를 표현할 수 있는 경우의 수를 계산하는 것입니다.이 문제는 조합론과 경우의 수를.. 2024. 11. 9.
[C/C++] 프로젝트 오일러 #89 Roman Numerals(계산) 이번 문제는 로마 숫자와 관련된 것입니다. 프로젝트 오일러 문제 89: 로마 숫자 최적화로마 숫자는 전통적으로 다음과 같은 문자 조합으로 이루어집니다:• I = 1• V = 5• X = 10• L = 50• C = 100• D = 500• M = 1000그리고 로마 숫자는 보통 큰 숫자가 작은 숫자보다 앞에 오는 방식으로 작성됩니다. 예를 들어, VII는 7입니다(5 + 1 + 1). 하지만 더 작은 로마 숫자 기호가 더 큰 숫자 앞에 오면 그 값을 빼는 방식으로 표현할 수 있습니다. 예를 들어, IV는 4이고, IX는 9입니다.문제:주어진 로마 숫자를 가장 간단하게 표현했을 때, 몇 개의 문자를 절약할 수 있는지 계산하는 것입니다.1. 로마 숫자들을 최적화하여 가장 짧은 형태로 바꿉니다.2. 변환 전의.. 2024. 11. 1.
[C/C++] 프로젝트 오일러 #88 Product-sum Numbers(단순 해결) 이 프로그램은 Project Euler 문제 #88, Product-sum Numbers 문제를 해결하기 위해 작성된 C 코드입니다. 이 문제는 “product-sum number”와 관련된 문제로, 숫자들의 곱과 합이 같은 여러 가지 조합을 찾는 것입니다.  문제 링크는 다음과 같습니다.https://projecteuler.net/problem=88 다음은 코드의 각 부분을 설명합니다.코드 분석1. 상수 정의 및 배열 초기화#define MAXK 12000int minv[MAXK + 1];int mcount = 0;MAXK는 문제에서 요구하는 k 값의 최대 크기 (12000)를 정의한 것입니다. minv 배열은 k 값마다 최솟값인 n을 저장합니다. mcount는 찾아낸 값의 개수를 카운트합니다.2. 재.. 2024. 10. 31.
[C/C++] 프로젝트 오일러 #87 Prime Power Triples(단순 반복) 이 문제는 난이도 20%로 측정된 것입니다.단순하게 소수를 구하고 세개의 수를 제곱, 세제곱, 네제곱한 결과가 어떤 수가 나오는지 계산하는 것입니다.단순 작업만으로도 해결이 되는 문제죠.  이 코드는 프로젝트 오일러 문제 #87 “Prime Power Triples”를 해결하기 위해 작성된 프로그램입니다. 이 문제의 목표는 50,000,000 미만의 숫자 중에서 \(p_1^2 + p_2^3 + p_3^4\)  형식을 만족하는 서로 다른 수의 개수를 찾는 것입니다. 여기서 \(p_1\), \(p_2\), \(p_3\)는 모두 소수입니다. 아래는 코드의 주요 부분에 대한 설명입니다.코드 분석상수 및 배열 정의:#define LIMIT 50000000 static int primes\[1000000\], p.. 2024. 10. 28.
[C/C++] 프로젝트 오일러 #86 Cuboid Route(Brute Force) 난이도는 35%의 문제이지만, 단순 방법으로 처리하면 그래도 적당한 시간에 해답을 찾을 수 있습니다.  문제는 각 모서리의 길이가 정수인 직육면체의 대척점 길이가 정수가 되는 경우를 찾는 것이죠. \(W \times H \times D\) 형태에서 대척점의 길이는 \( \sqrt{ W^2 + H^2 + D^2 } \)이 됩니다. 이것이 정수가 되기 위해서는 \( W^2 + H^2 + D^2 \)이 제곱수여야 합니다. 수학적인 방법도 존재하겠죠. 피타고라스 수를 연결하면 될 듯 합니다. 3-4-5 와 5-12-13 은 연결이 됩니다. 즉, \(3^2 + 4^2 + 12^2\)은 제곱수가 될 수 있는 것이죠. 문제의 출처는 다음과 같습니다.https://projecteuler.net/problem=86 제가.. 2024. 10. 18.
[C/C++] 프로젝트 오일러 #85 Counting Rectangles(Brute Force) 이번 문제는 난이도는 15% 정도입니다.문제 자체가 어려운 것은 아니어서, 보통은 단순한 방법으로 풀어보고, 알고리즘 효율을 꾀하는 편이긴 하지만, 여기서는 단순한 방법으로 문제를 풀어보았습니다.  문제의 출처는 다음과 같습니다.https://projecteuler.net/problem=85 이 프로그램은 Project Euler의 문제 85를 해결하기 위한 C/C++ 프로그램입니다. 문제의 목표는 주어진 제한 조건 하에서 사각형의 개수를 계산하는 것입니다. 이 코드는 특정 사각형 수와 목표 값 사이의 오차가 가장 작은 직사각형의 크기를 찾으려고 합니다. //------------------------------------------------// Project Euler #85 - Counting.. 2024. 10. 8.
728x90