projecteuler

    (파이썬)백준 4673.셀프 넘버

    문제 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ... n을 d(n)의 생성자라..

    (C언어, 파이썬)프로젝트 오일러(Project Euler)16.2^1000의 각 자리수를 모두 더하면?

    215 = 32768 의 각 자리수를 더하면 3 + 2 + 7 + 6 + 8 = 26 입니다. 21000의 각 자리수를 모두 더하면 얼마입니까? 1. 파이썬 a = str(2**1000) sum = 0 for i in range(len(a)): sum += int(a[i]) print(sum) 파이썬으로 구현하면 정말 쉬워진다. 21000을 문자열 형태로 저장하고, 문자열의 길이만큼 인덱스를 정수형태로 변환해 더하면 끝난다. 2. C언어 #define SIZE 400 #include int main(void) { int num[SIZE] = { 0 }; num[SIZE - 1] = 1; int i, j, sum = 0; for (i = 1; i = 10) { num[j - 1] = num[j - 1] +..

    (파이썬)프로젝트 오일러(Project Euler)15.20×20 격자의 좌상단에서 우하단으로 가는 경로의 수

    아래와 같은 2 × 2 격자의 왼쪽 위 모서리에서 출발하여 오른쪽 아래 모서리까지 도달하는 길은 모두 6가지가 있습니다 (거슬러 가지는 않기로 합니다). 그러면 20 × 20 격자에는 모두 몇 개의 경로가 있습니까? def fac(n): if n == 1: return 1 return n * fac(n - 1) for n in range(1, 21): count = fac(2 * n) / fac(n) / fac(n) print(f"{n} * {n}격자에서 경로 수: {count}\n") 고등학교 확통 단골 문제다. 첫 번째 방법은 모서리마다 숫자를 적고 목적지에 도착할때까지 더해가며 구하는 방법이다. 두 번째 방법은 순열을 이용하는 방법이다. 정직하게 격자 배열을 이동하는 문제이므로 순열을 이용하기로 했..

    (C언어)프로젝트 오일러(Project Euler)14.백만 이하로 시작하는 우박수 중 가장 긴 과정을 거치는 것은?

    양의 정수 n에 대하여, 다음과 같은 계산 과정을 반복하기로 합니다. n → n / 2 (n이 짝수일 때) n → 3 n + 1 (n이 홀수일 때) 13에 대하여 위의 규칙을 적용해보면 아래처럼 10번의 과정을 통해 1이 됩니다. 13 → 40 → 20 → 10 → 5 → 16 → 8 → 4 → 2 → 1 아직 증명은 되지 않았지만, 이런 과정을 거치면 어떤 수로 시작해도 마지막에는 1로 끝나리라 생각됩니다. (역주: 이것은 콜라츠 추측 Collatz Conjecture이라고 하며, 이런 수들을 우박수 hailstone sequence라 부르기도 합니다) 그러면, 백만(1,000,000) 이하의 수로 시작했을 때 1까지 도달하는데 가장 긴 과정을 거치는 숫자는 얼마입니까?참고: 계산 과정 도중에는 숫자가..

    (파이썬)프로젝트 오일러(Project Euler)13.50자리 숫자 100개를 더한 값의 첫 10자리 구하기

    아래에 50자리 숫자가 100개 있습니다. 이것을 모두 더한 값의 첫 10자리는 얼마입니까? 37107287533902102798797998220837590246510135740250 46376937677490009712648124896970078050417018260538 74324986199524741059474233309513058123726617309629 91942213363574161572522430563301811072406154908250 23067588207539346171171980310421047513778063246676 89261670696623633820136378418383684178734361726757 2811287981284997940806548193159262169127..

    (C언어)프로젝트 오일러(Project Euler)12.500개 이상의 약수를 갖는 가장 작은 삼각수는?

    1부터 n까지의 자연수를 차례로 더하여 구해진 값을 삼각수라고 합니다.예를 들어 7번째 삼각수는 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28 이 됩니다. 이런 식으로 삼각수를 구해 나가면 다음과 같습니다. 1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ... 이 삼각수들의 약수를 구해봅시다. 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 위에서 보듯이, 5개 이상의 약수를 갖는 첫번째 삼각수는 28입니다. 그러면 500개 이상의 약수를 갖는 가장 작은 삼각수는 얼마입니까? #include int main() { int n = 0, i, sum, c..

    (C언어)프로젝트 오일러(Project Euler) 3.가장 큰 소인수 구하기

    문제 어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다. 예를 들면 13195의 소인수는 5, 7, 13, 29 입니다. 600851475143의 소인수 중에서 가장 큰 수를 구하세요. 코드 #include int main(void) { int divisor; //나눗수 long long quotient = 600851475143; for (divisor = 2; divisor