프로젝트오일러

    (파이썬)백준 10996.별 찍기 - 21

    예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. n = int(input()) if n % 2 != 0: #홀수인 경우 for i in range(n): print("* "* (n // 2 + 1)) print(" *"* (n // 2) ) if n % 2 == 0: #짝수인 경우 for i in range(n): print("* "* (n // 2)) print(" *"* (n // 2)) n이 홀수일 때는 첫 줄에 (별, 공백)을 n // 2 + 1 개, 둘째 줄에 (공백, 별) n // 2개 출력한다. 이 패턴을 n회 반복한다. n이 3이라면 * * * 이 패턴이 3회 반복되고, n이 5라면 * * * * * 이 패턴이 5회 반복된다. 짝수일 때는 (별, 공백), (공백, 별)을 n // 2 만..

    (파이썬)백준 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)10. 이백만 이하 소수의 합

    문제 10 이하의 소수를 모두 더하면 2 + 3 + 5 + 7 = 17 이 됩니다. 이백만(2,000,000) 이하 소수의 합은 얼마입니까? 코드 #include #include #include #define NUM 2000000 int main(void) { int i, j; int* prime= (int*)malloc(sizeof(int) * NUM); //배열 동적할당 long long sum = 0; for (i = 2; i