본문 바로가기

수학

(16)
[JAVA] 원탁에서 n 칸씩 건너 빼와서 만들어진 수열 다음 지식에서 재미있어 보이는 문제가 있어서 한번 짜 봤다. 문제는 다음과 같다. 2010년 4월 1일 추가 : 여기에 좀 더 재미있는 분석과 코드가 있다. Josephus Problem 이란 이름이 붙은 것 같다. http://k.daum.net/qna/view.html?qid=44T6T 친구가 질문했는데 너무 어려워서 지인들의 설명을 듣고자 질문합니다. 1부터 30까지의 수를 가진 사람이 순서대로 원 주위로 앉아있을 때, 먼저, 9번째 앉아있는 사람을 쫓아내고, 그로부터 9칸을 더 간 18번째 사람을 쫓아낸다. 마찬가지로 9칸을 더 간 27번 사람을 쫓아내고, 그 다음, 또 9칸을 더 간 사람(6번)을 쫓아낸다. 그리 고 나서 9칸을 갈 때에는 9번째 앉았던 쫓겨난 사람은 없는 것으로 치고 9칸 뒤,..
2의 거듭제곱 (10만승까지) 벤포드 법칙 무식쟁이 방법으로 확인. #!/usr/bin/env python # http://bomber0.byus.net/index.php/2009/07/30/1409 # brute force check twopow = 1 tenpow = 1 cnt = [ 0 for i in range(10) ] pro = [ 0 for i in range(10) ] for i in range(100000): twopow *= 2 if twopow/(tenpow*10) > 0: tenpow *= 10 #d1 = int(("%d"%twopow)[0]) d = twopow/tenpow #if d1 != d: # print twopow cnt[d] += 1 if (i+1)%1000 == 0: print (i+1) print "%d\t%d\t%d\t%d\t%d\..
[Py] 신이 보여준 정리 신이 보여준 정리를 보고 재미있을 것 같아서 짜봤다. 답을 대충 짐작하고 나서는 예쁘게 n + 1 = sqrt(1 + (n) sqrt(1 + (n+1) sqrt(..))) 이 n x (n + 1) = n x sqrt(1 + (n+1) sqrt(...)) 으로 정리되는 걸 알았다. #!/usr/bin/env python # _____________________________ # / ___________________ # / 1 + 2 / ___________ = ? # |/ |/ 1 + 3 |/ ..... # # import math def get_prev(x, n): return math.sqrt(1 + n*x) def eval_first(x0, n): #print "" #print "=========..
[Py] 중복된 숫자 집합을 주어진 합으로 분할하기 #!/usr/bin/env python def is_two_listlist_identical(lla, llb): #print "XXXXXXXXXXXXXXXXXXXXXXX" #print lla #print llb for i in range(len(lla)): la = lla[i] lb = llb[i] if len(la) != len(lb): return False else: if len(la) != 0: for j in range(len(la)): if la[j] != lb[j]: return False return True def is_already_in(lll, ll): la = [ le for le in ll ] for e_ll in lll: lb = [ le for le in e_ll ] if is..
[Py] 숫자 리스트와 합이 주어졌을 때, 리스트의 합이 주어진 합인 부분 리스트 찾기 #----------------------------------------------------- def is_in_list(lst, lstlst): lst.sort() bRet = False for e in lstlst: e.sort() if len(e) == len(lst): bRet = True for i in range(len(e)): if e[i] != lst[i]: bRet = False break return bRet #----------------------------------------------------- def find_combination(sum, list): # print "---------" # print "-----------", sum, list, "------------..
[FORTRAN77|초급] exp 함수 테일러급수 exp(x) 의 테일러 급수를 이용하여, exp(5)의 값을 구하는 기초기초적인 프로그래밍. 포트란 77로 짠 소스이고, 문제에서는 20번째 항까지 계산하라고 한다. 포트란에서 인자 받고 하는 걸 몰라서 소스에 박혀있다.간단한 거지만 살짝 설명하면, TERM이 더할 각 항이고, 각 항과 다음 항 하고의 관계가 아주 예뻐서 프로그래밍 숙제로 나오기 아주 좋다. PROGRAM Exp SUM = 0 X = 5 TERM = 1 SUM = SUM + TERM DO 1, I = 1, 20 TERM = TERM * X / I SUM = SUM + TERM 1 CONTINUE PRINT *, SUM STOP END 빨간 색으로 된 부분은 스페이스가 아니라 탭으로 들여쓰기 한 걸 구분해 주기 위해 빔에서 표시된 것. D..
[C|MFC|수치해석] 라그랑지 다항식 라그랑지 다항식. 주어진 n 개의 점들을 지나는 n-1차 다항식을 구하는 것. 공식은 위키백과 영문판을 참고했다. #include #include typedef struct _data { double x; double y; } DATA; double l(DATA *dataList, int nData, int j, double x) { double prod = 1; for(int i=0; i
[C|MFC] 푸리에 시리즈 사각파 사각파 푸리에 시리즈 python 버전은 : https://daewonyoon.tistory.com/258 조금 지져분한 콘솔버전 /* By 숙제도둑 */ #include #define PI 3.1415927 /* * 1 * F (t) = ------- sin ( (2n+1) t ) * n 2n + 1 * */ double f(int n, double t) { return sin((2*n+1)*t)/(2*n+1); } /* * * k * X (t) = Sigma F (t) * k n = 1 n * */ double X(int k, double t) { int n; double sum = 0.0; for(n=0; n