본문 바로가기

[Project Euler 183] 분할곱 http://projecteuler.net/index.php?section=problems&id=183 N이 양의 정수이고, N을 k 개로 똑같이 나누자. r = N/k 즉, N = r + r + ... + r 이다.P를 이 분할의 곱이라고 한다. 즉, P = r x r x ... x r = rk 예를 들어, 11을 다섯 개로 나누면, 11 = 2.2 + 2.2 + 2.2 + 2.2 + 2.2 이고, P는P = 2.25 = 51.53632 이다. 그리고, N에 대해 M(N) = Pmax , 즉 P가 갖을 수 있는 최대값으로 정의하자. N = 11일 때에는 다섯 개로 나누었을 때, Pmax = (11/4)4 로 최대가 되고, 다시, M(11) = 14641/256 = 57.19140625, 으로 10진수 ..
[Project Euler 204] 해밍수 해밍수(Hamming number)란 5보다 큰 소수 인수를 갖지 않는 양수를 말한다. 즉, 해밍수를 작은 것부터 몇 개 나열하면 다음과 같다. 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15. 108보다 작은 해밍수는 1105개가 있다. 이 개념을 일반화하자. 타잎 n의 일반화된 해밍수를 n보다 큰 소수 인수를 갖지 않는 양수로 정의하자. 즉, 해밍수는 타잎 5의 일반화된 해밍수가 된다. 109보다 작은 타잎 100의 일반화된 해밍수는 몇 개 인가? 재귀로 풀었다. 아래가 코드. #!/usr/bin/env python # Euler Project Problem 204 # Hamming number import math LIM = 10**8 count = 0 for a in range(in..
[Project Euler 123] (p-1)^n + (p+1)^n % p^2 http://projecteuler.net/index.php?section=problems&id=123 pn 이 n번째 소수 ( 2, 3, 5, 7, 11, ..., )이고, r이 (pn1)n + (pn+1)n 를 pn2으로 나눈 나머지라고 하자. 예를 들어, n = 3, p3 = 5 이고, 43 + 63 = 280 5 mod 25 이다. 이 나머지가 109을 넘는 가장 작은 n은 7037이다. 나머지가 1010을 넘는 가장 작은 n을 구하라. #!/usr/bin/env python # Project Euler Problem 123 def remainder0(p, n): return ((p-1)**n + (p+1)**n)%(p*p) def remainder(p, n): ''' p is a prime. r..
[Project Euler 148] 파스칼 삼각형 mod 7 http://projecteuler.net/index.php?section=problems&id=148 파스칼 삼각형을 7번째 줄까지 써보면, 7로 나누어 떨어지는 것이 없다는 걸 알 수 있다.: 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 1 6 15 20 15 6 1 그러나, 100번째 줄까지를 보면, 5050개의 숫자 중에서 2361개만 7로 나누어 떨어지지 않는다. 10억(109)번째 줄까지 중에서 7로 나누어 떨어지지 않는 것의 갯수를 구하라. 우선, a+b mod n = (a mod n) + (b mod n) mod n 과 같다는 걸 이용해서 그림을 그려보면, 아주 예쁜 프랙탈모양을 이룸을 알 수 있다. 그리고, 숫자를 7진수로 변환한 후 생각하면 훨씬 생각이..
[MFC|CPP] 사구모양의 포텐셜 만들기 다음 신지식에 재미있어 보이는 게 있길래 답변달다가 만들어 본 것. 2차원 평면상에 주어진 점 P를 중심으로 둥그런 모양의 산을 만들어 보란다. 3차원 그래픽까지 구현할라면 죽을 것 같아서, 2차원 평면의 각 점에서의 함수값은 색으로 표현했다. 단색으로 표현할라니까 분해능이 256가지 뿐이다. 왼쪽 버튼을 클릭하면, 분지의 중앙점이 되는 P가 바뀌고, 오른쪽 버튼을 클릭하면 산이 바라보는 타겟 T가 바뀐다. 휠을 돌리면 분지의 반지름이 넓어진다. 소스코드다. VC6.0 에서 만들었다.
[ProjectEuler 206] 1_2_3_4_5_6_7_8_9_0 = n*n 인 유일한 n구하기. #!/usr/bin/env python ''' for x in xrange(101010101, 138902663): if xx % 10 != 7 or xx % 10 != 3: continue xx = 10*x s = str(xx*xx) # print s # print "1_2_3_4_5_6_7_8_9_0" MeetCondition=True for i in xrange(1, 10): if s[2*(i-1)] != str(i): MeetCondition=False break if MeetCondition: print xx*xx, xx print "1_2_3_4_5_6_7_8_9_0" ''' s = "1_2_3_4_5_6_7_8_9_0" def GetList(lst, length): if length == 9..
직육면체가 특정 면으로 착지할 확률 관련 포스팅 http://astralepic.egloos.com/4022771 http://zariski.egloos.com/2229177 http://mcfrog.org/tt/848 #!/usr/bin/env python import math def length(V): sq_sum = 0 for i in xrange(3): sq_sum += V[i]*V[i] return math.sqrt(sq_sum) def dot(U, V): d = 0 for i in xrange(3): d += U[i]*V[i] return d def omega(A, B, C): ''' computes the steradian defined by three vectors A, B, C. ref : http://en.wikipedi..
[복잡] For all e in G, and for all f not in G, e # G is significantly bigger than f # G.By above definition, we should be able to define a group G out of a linked structure.Remainig problems are how should we define a product of an element on a set of elements, denoted above with #.how should we mathematically define the language "significantly bigger".Idea for 1 e # G = ratio of links from e into GIde..