전체 글 240

project euler 43. problem

숫자 1406357289은 0 ~ 9 팬디지털인데, 부분열에 관련된 재미있는 성질을 가지고 있습니다.d1을 첫째 자리수, d2를 둘째 자리수...라고 했을 때, 다음과 같은 사실을 발견할 수 있습니다.d2 d3 d4 = 406 → 2로 나누어 떨어짐d3 d4 d5 = 063 → 3으로 나누어 떨어짐d4 d5 d6 = 635 → 5로 나누어 떨어짐d5 d6 d7 = 357 → 7로 나누어 떨어짐d6 d7 d8 = 572 → 11로 나누어 떨어짐d7 d8 d9 = 728 → 13으로 나누어 떨어짐d8 d9 d10 = 289 → 17로 나누어 떨어짐위와 같은 성질을 갖는 0 ~ 9 팬디지털을 모두 찾아서 그 합을 구하면 얼마입니까? 1234567891011121314151617181920212223242526..

project euler 42. problem

n번째 삼각수는 tn = ½ n (n + 1) 이라는 식으로 구할 수 있는데, 처음 10개는 아래와 같습니다.1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...어떤 영어 단어에 대해서, 각 철자의 알파벳 순서(A=1, B=2, ..., Z=26)를 모두 더한 값을 '단어값'이라 부르기로 합니다. 예를 들어 'SKY'의 단어값은 19 + 11 + 25 = 55가 되는데, 이것은 우연히도 t10과 같습니다. 이렇게 어떤 단어의 단어값이 삼각수일 경우에는 이 단어를 '삼각단어'라 부르기로 합니다.약 16KB의 텍스트 파일 words.txt에는 2000개 정도의 영어 단어가 수록되어 있습니다. 이 중에서 삼각단어는 모두 몇 개입니까? 1234567891011121314151617181920..

project euler 40. problem

소수점 뒤에 양의 정수를 차례대로 붙여 나가면 아래와 같은 무리수를 만들 수 있습니다.0.123456789101112131415161718192021...이 무리수의 소수점 아래 12번째 자리에는 1이 옵니다 (위에서 붉게 표시된 숫자).소수점 아래 n번째 숫자를 dn이라고 했을 때, 아래 식의 값은 얼마입니까?d1 × d10 × d100 × d1000 × d10000 × d100000 × d1000000 12345678910111213141516171819202122232425262728293031def selectChr(count, length, base): tmp = length - base if tmp >= 0: count %= 10**(tmp+1) count /= 10**(tmp) return ..

project euler 39. problem

세 변의 길이가 모두 자연수 {a, b, c}인 직각삼각형의 둘레를 p 로 둘 때, p = 120 을 만족하는 직각삼각형은 아래와 같이 세 개가 있습니다.{20, 48, 52}, {24, 45, 51}, {30, 40, 50}1000 이하의 둘레 p에 대해서, 직각삼각형이 가장 많이 만들어지는 p의 값은 얼마입니까? 123456789101112131415161718n = 1000 List = range(0, n) for a in range(1, n/2): for b in range(1, n/2): for c in range(1, n/2): if a**2 + b**2 == c**2 and a+b+c maxVal: maxVal = List[i]print List.index(maxVal) # 840#print..

project euler 38. problem

숫자 192에 1, 2, 3을 각각 곱합니다.192 × 1 = 192 192 × 2 = 384 192 × 3 = 576곱한 결과를 모두 이어보면 192384576 이고, 이것은 1 ~ 9 팬디지털(pandigital)인 숫자입니다. 이런 과정을 편의상 '곱해서 이어붙이기'라고 부르기로 합니다.같은 식으로 9와 (1, 2, 3, 4, 5)를 곱해서 이어붙이면 918273645 라는 1 ~ 9 팬디지털 숫자를 얻습니다.어떤 정수와 (1, 2, ... , n)을 곱해서 이어붙였을 때 얻을 수 있는 가장 큰 아홉자리의 1 ~ 9 팬디지털 숫자는 무엇입니까? (단 n > 1) 1234567891011121314151617181920212223242526272829def isPandigital(n): List = ..

project euler 36. problem

대칭수(palindrome)인 585는 2진수로 나타내도 10010010012가 되어 여전히 대칭수입니다.10진법과 2진법으로 모두 대칭수인 1,000,000 이하 숫자의 합을 구하세요.(주의: 첫번째 자리가 0이면 대칭수가 아님) 12345678910111213141516171819202122232425def palindrome(n): n = str(n) length = len(n) i = 0 while length > i: if n[i] == n[length-1]: i +=1 length -=1 else: return False return True arrays = range(1, 1000001)result = 0for element in arrays: if palindrome(element): if..

project euler 34. problem

숫자 145에는 신기한 성질이 있습니다. 각 자릿수의 팩토리얼(계승)을 더하면 1! + 4! + 5! = 1 + 24 + 120 = 145 처럼 자기 자신이 됩니다.이렇게 각 자릿수의 팩토리얼을 더하면 자기 자신이 되는 모든 수의 합을 구하세요.단, 1! = 1 과 2! = 2 의 경우는 덧셈이 아니므로 제외합니다. 12345678910111213141516171819def fact(n): result = 1 for i in range(1, n+1): result *= i return result result = 0 for i in range(3, 3000000): tmp = str(i) Sum = 0 for j in range(0, len(tmp)): Sum += fact(int(tmp[j])) if ..

project euler 33. problem

분수 49/98에는 재미있는 성질이 있습니다. 수학을 잘 모르는 사람이 분모와 분자에서 9를 각각 지워서 간단히 하려고 49/98 = 4/8 처럼 계산해도 올바른 결과가 됩니다.이에 비해 30/50 = 3/5 같은 경우는 다소 진부한 예라고 볼 수 있습니다.위와 같은 성질을 가지면서 '진부하지 않은' 분수는, 값이 1보다 작고 분자와 분모가 2자리 정수인 경우 모두 4개가 있습니다.이 4개의 분수를 곱해서 약분했을 때 분모는 얼마입니까? 1234567891011121314151617181920212223242526272829303132numX = 1denY = 1 for i in range(10, 100): if i % 10 == 0: continue for j in range(10, 100): nume..