델마당에 재미있는 퀴즈가 올라 왔습니다.
모든 저항값이 R이라 할 때 전체 저항 값을 구하라는 것이었습니다.
[추론]
R1, R2 가 직렬로 연결되어 있을 때 전체 저항 값은 R1 + R2 가 된다(산술 평균).
R1, R2 가 병렬로 연결되어 있을 때 전체 저항 값은 (R1*R2)/(R1 + R2) 가 된다(조화 평균).
따라서 옆에 3개의 저항이 더 붙었을 때 계산될 수 있는 새로운 저항(Rnext)값은 다음과 같이 계산할 수 있다.
R * (2R + Rprev)
Rnext = ----------------
R + (2R + Rprev)
[코드]
#include <stdio.h>
#include "fraction.h"
//
// R * (2R + Rprev)
// Rnext = ----------------
// R + (2R + Rprev)
//
Fraction getNextResistance(Fraction R, Fraction Rprev)
{
Fraction Rnext;
Rnext = ( R * (R * 2 + Rprev) )
/
( R + (R * 2 + Rprev) );
return Rnext;
}
void writeFraction(Fraction& f)
{
double temp = (int)f.n;
temp /= f.d;
printf("%lld / %lld (%f) \n", f.n, f.d, temp);
}
#define COUNT 16
int main()
{
Fraction R(1, 1);
Fraction Rprev = R;
Fraction Rnext;
for (int i = 0; i < COUNT; i++)
{
Rnext = getNextResistance(R, Rprev);
Rprev = Rnext;
writeFraction(Rnext);
}
}
[결과]
R1 = 1 이라고 가정을 하고 다음과 같은 저항값을 가지게 된다.
3 / 4 (0.750000)
11 / 15 (0.733333)
41 / 56 (0.732143)
153 / 209 (0.732057)
571 / 780 (0.732051)
2131 / 2911 (0.732051)
7953 / 10864 (0.732051)
29681 / 40545 (0.732051)
110771 / 151316 (0.732051)
413403 / 564719 (0.732051)
1542841 / 2107560 (0.732051)
5757961 / 7865521 (0.732051)
21489003 / 29354524 (0.732051)
80198051 / 109552575 (0.732051)
299303201 / 408855776 (0.732051)
1117014753 / 1525870529 (0.732051)
역시 사람은 머리가 나쁘면 수족이 고생한다고... 공돌이가 수학적인 접근을 하지 못할때 저같이 고생을 하게 됩니다. 아래는 그냥 쉽게 풀어 버린 무념님의 답변... 우왕굳
http://www.delmadang.com/community/bbs_view.asp?bbsNo=19&indx=419838