본문 바로가기
반응형

분류 전체보기146

[C++]프로젝트 오일러 9번 문제&풀이 (a + b + c = 1000 이 되는 피타고라스 수) 문제 세 자연수 a, b, c 가 피타고라스 정리 a2 + b2 = c2 를 만족하면 피타고라스 수라고 부릅니다 (여기서 a 2020. 11. 19.
[C++]프로젝트 오일러 8번 문제&풀이 (1000자리 수 안에서 이어지는 5개 숫자의 곱 중 최댓값은?) 문제 다음은 연속된 1000자리 수입니다 (읽기 좋게 50자리씩 잘라 놓음). 73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 85861560789112949495459501737958331952853208805511 12540698747158523863050715693290963295227443043557 66896648950445244523161731856403098711121722383113 62229893423380308135336276614282806444486645238749 303589072962904915604407723907138105158593079608.. 2020. 11. 19.
[C++]프로젝트 오일러 6번 문제&풀이 (1부터 100까지 "제곱의 합"과 "합의 제곱"의 차는?) 문제 6번 1부터 10까지 자연수를 각각 제곱해 더하면 다음과 같습니다 (제곱의 합). 12 + 22 + ... + 102 = 385 1부터 10을 먼저 더한 다음에 그 결과를 제곱하면 다음과 같습니다 (합의 제곱). (1 + 2 + ... + 10)2 = 552 = 3025 따라서 1부터 10까지 자연수에 대해 "합의 제곱"과 "제곱의 합" 의 차이는 3025 - 385 = 2640 이 됩니다. 그러면 1부터 100까지 자연수에 대해 "합의 제곱"과 "제곱의 합"의 차이는 얼마입니까? 접근방법 1. 1부터 100까지 제곱의 합과 합의 제곱을 각각 구한다. 2. 구한 값의 차의 절대값이 우리가 구하고자 하는 값이다. (아무리 생각해도 쉬어가는 문제인 것 같다ㅎㅎ) #include #include usin.. 2020. 11. 19.
[C++]프로젝트 오일러 5번 문제&풀이 (1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수) 문제 5번 1 ~ 10 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 2520입니다. 그러면 1 ~ 20 사이의 어떤 수로도 나누어 떨어지는 가장 작은 수는 얼마입니까? 접근방법 1. 숫자(num) 20을 2(i)부터 1씩 더해가며 나눠볼껀데... 2. 나눠지면 i+1을, 안나눠지면 숫자(num)+1을 하고 i를 2로 초기화 시켜준다. 3. 반복문을 통과한 값이 우리가 구하고자 하는 값이다. #include using namespace std; int main() { int num = 20; int i = 2; while(i 2020. 11. 19.
[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.
[C++]프로젝트 오일러 3번 문제&풀이 (가장 큰 소인수 구하기) 문제 어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다. 예를 들면 13195의 소인수는 5, 7, 13, 29 입니다. 600851475143의 소인수 중에서 가장 큰 수를 구하세요. 접근방법 1. 1부터 차례로 증가시키며 계산하되, 2. 해당 숫자로 나눠지면 계속 나누고, 안 나눠지면 그 때 증가시킨다. 3. 마지막으로 나누었을 때 1이 되도록 하는 값이 우리가 구하고자 하는 값이다. #include using namespace std; int main() { __int64 num = 600851475143; int i = 2; while (num != 1) { if (num % i == 0) { num /= i; //cout 2020. 11. 17.
반응형