* Computer Science/Project Euler 47

project euler 26. problem

분자가 1인 분수를 단위분수라고 합니다. 분모가 2에서 10까지의 단위분수는 아래와 같습니다.숫자 위에 찍힌 점은 순환마디를 나타내는데, 1/6의 경우 순환마디는 "6"으로 0.166666...처럼 6이 무한히 반복됨을 뜻합니다. 같은 식으로 1/7은 6자리의 순환마디(142857)를 가집니다.d 를 1000 이하의 정수라고 할 때, 단위분수 1/d 의 순환마디가 가장 긴 수는 무엇입니까? 12345678910111213141516171819202122232425262728sequenceLength = 0array = [] for i in range(0, 1001): array.append(0)for i in range(1000, 1, -1): if sequenceLength >= i: continue ..

project euler 25. problem

피보나치 수열은 아래와 같은 점화식으로 정의됩니다.Fn = Fn-1 + Fn-2 (단, F1 = 1, F2 = 1).이에 따라 수열을 12번째 항까지 차례대로 계산하면 다음과 같습니다.F1 = 1 F2 = 1 F3 = 2 F4 = 3 F5 = 5 F6 = 8 F7 = 13 F8 = 21 F9 = 34 F10 = 55 F11 = 89 F12 = 144수열의 값은 F12에서 처음으로 3자리가 됩니다.피보나치 수열에서 값이 처음으로 1000자리가 되는 것은 몇번째 항입니까? 12345678910def fibo(n1, n2, cnt): target = 10**1000 if n2 > target: print cnt print n2 else: return fibo(n2, n1+n2, cnt+1) fibo(1, 1,..

project euler 22. problem

문제 : 여기 5천개 이상의 영문 이름들이 들어있는 46KB짜리 텍스트 파일 names.txt 이 있습니다 (우클릭해서 다운로드 받으세요).이제 각 이름에 대해서 아래와 같은 방법으로 점수를 매기고자 합니다.먼저 모든 이름을 알파벳 순으로 정렬합니다.각 이름에 대해서, 그 이름을 이루는 알파벳에 해당하는 숫자(A=1, B=2, ..., Z=26)를 모두 더합니다.여기에 이 이름의 순번을 곱합니다.예를 들어 "COLIN"의 경우, 알파벳에 해당하는 숫자는 3, 15, 12, 9, 14이므로 합이 53, 그리고 정렬했을 때 938번째에 오므로 최종 점수는 938 × 53 = 49714가 됩니다.names.txt에 들어있는 모든 이름의 점수를 계산해서 더하면 얼마입니까? 123456789101112131415..

project euler 21. problem

문제 : n의 약수들 중에서 자신을 제외한 것의 합을 d(n)으로 정의했을 때,서로 다른 두 정수 a, b에 대하여 d(a) = b 이고 d(b) = a 이면 a, b는 친화쌍이라 하고 a와 b를 각각 친화수(우애수)라고 합니다.예를 들어 220의 약수는 자신을 제외하면 1, 2, 4, 5, 10, 11, 20, 22, 44, 55, 110 이므로 그 합은 d(220) = 284 입니다. 또 284의 약수는 자신을 제외하면 1, 2, 4, 71, 142 이므로 d(284) = 220 입니다. 따라서 220과 284는 친화쌍이 됩니다.10000 이하의 친화수들을 모두 찾아서 그 합을 구하세요. 1234567891011121314151617result = 0 for i in range(2, 10001): s..

project euler 20. problem

문제 : n! 이라는 표기법은 n × (n − 1) × ... × 3 × 2 × 1을 뜻합니다.예를 들자면 10! = 10 × 9 × ... × 3 × 2 × 1 = 3628800 이 되는데, 여기서 10!의 각 자리수를 더해 보면 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27 입니다.100! 의 자리수를 모두 더하면 얼마입니까? 123456789101112131415buf = 1target = 100 for i in range(1, 101): buf *= ibuf = str(buf) print buf result = 0 for i in range(0, len(buf)): result += int(buf[i]) print "result is ", resultcs C:\Users\soicem\De..

project euler 19. problem

문제 : 다음은 달력에 관한 몇 가지 일반적인 정보입니다 (필요한 경우 좀 더 연구를 해 보셔도 좋습니다).1900년 1월 1일은 월요일이다.4월, 6월, 9월, 11월은 30일까지 있고, 1월, 3월, 5월, 7월, 8월, 10월, 12월은 31일까지 있다.2월은 28일이지만, 윤년에는 29일까지 있다.윤년은 연도를 4로 나누어 떨어지는 해를 말한다. 하지만 400으로 나누어 떨어지지 않는 매 100년째는 윤년이 아니며, 400으로 나누어 떨어지면 윤년이다20세기 (1901년 1월 1일 ~ 2000년 12월 31일) 에서, 매월 1일이 일요일인 경우는 총 몇 번입니까? 12345678910111213141516171819202122232425262728293031323334353637383940days..

project euler 18. problem

문제 : 다음과 같이 삼각형 모양으로 숫자를 배열했습니다.3 7 4 2 4 6 8 5 9 3삼각형의 꼭대기부터 아래쪽으로 인접한 숫자를 찾아 내려가면서 합을 구하면, 위의 그림처럼 3 + 7 + 4 + 9 = 23 이 가장 큰 합을 갖는 경로가 됩니다.다음 삼각형에서 합이 최대가 되는 경로를 찾아서 그 합을 구하세요.75 95 64 17 47 82 18 35 87 10 20 04 82 47 65 19 01 23 75 03 34 88 02 77 73 07 63 67 99 65 04 28 06 16 70 92 41 41 26 56 83 40 80 70 33 41 48 72 33 47 32 37 16 94 29 53 71 44 65 25 43 91 52 97 51 14 70 11 33 28 77 73 17 7..

project euler 17. problem

문제 : 1부터 5까지의 숫자를 영어로 쓰면 one, two, three, four, five 이고,각 단어의 길이를 더하면 3 + 3 + 5 + 4 + 4 = 19 이므로 사용된 글자는 모두 19개입니다.1부터 1,000까지 영어로 썼을 때는 모두 몇 개의 글자를 사용해야 할까요?참고: 빈 칸이나 하이픈('-')은 셈에서 제외하며, 단어 사이의 and 는 셈에 넣습니다. 예를 들어 342를 영어로 쓰면 three hundred and forty-two 가 되어서 23 글자, 115 = one hundred and fifteen 의 경우에는 20 글자가 됩니다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444..

project euler 15. problem

문제 : 아래와 같은 2 × 2 격자의 왼쪽 위 모서리에서 출발하여 오른쪽 아래 모서리까지 도달하는 길은 모두 6가지가 있습니다 (거슬러 가지는 않기로 합니다).그러면 20 × 20 격자에는 모두 몇 개의 경로가 있습니까? 123456789import math def X_x_Y(x, y): print math.factorial(x+y) / (math.factorial(x) * math.factorial(y)) x = int(raw_input("x :"))y = int(raw_input("y :"))X_x_Y(x, y) Colored by Color Scriptercs cnsl@ubuntu:/tmp$ python test.pyx :20y :20137846528820