선 두줄요약
20*(2/3+(2/3)^2+(2/3)^3+(2/3)^4........) + 10 이라는 무한등비수열과 유사한 공식을
while문이나 do while문만 써서 소수점 14자리까지 나오도록 합을 구하는 것.
개강기념으로 C++대비해서 C언어 복습중인데
이거 아무리 봐도 미치겠다
원래 공식은
10+(2*(10*2/3)+2*(10*(2/3)^2)+2*(10*(2/3)^3)+2*(10*(2/3)^4)+2*(10*(2/3)^5) .........
이런 식으로 늘어나는데 몇개 허점 좀 잡아서 공식 정리해보니까
20*(2/3+(2/3)^2+(2/3)^3+(2/3)^4........) + 10
이렇게 나오더라고
(거듭제곱만 존나 늘어난다고 보면 됨. 그니까 등비수열, 그것도 무한등비수열이지 씨발;;)
근데 저렇게 나온 상태에서 중고딩들이 쓰는 등비수열의 합이나 그와 관련된 공식들 돌려서
while문이나 do while문으로 써서 돌리면 C언어로 계산이 안 되잖아?
백퍼 0 아니면 쓰레기값 뜰듯하니 이건 또 아니겠더라고ㅡㅡ;;
암튼 내가 저 수열공식의 합이 소수점 아래 14자리에서 계산 멈추게 만드는 것과 동시에
마지막으로 나온 값에서 +10을 해주려고 시도중인데
어떻게 처리해야 좋을지 모름;;;
그래서 물어보는데 이거 방법 없음?
참고로 while문이랑 do while문만 사용 가능하고, 나머지는 안 됨.
애당초 나머지 가능했으면 내가 벡터를 쓰든 뭘 쓰든해서 성공시키는데 이건 진짜 욕나옴
어짜피 값은 계속 작아지니까 20*(2/3)^n 이 10^-14 보다 작다면 멈추면 되지.
ㄱㅅㄱㅅ 그러면 합은 어케구하면 됨? 끝도없이 더해야하는데ㅡㅡ;;
양변에 ln 붙여서 정리하면 n이 (-14 ln10 -ln20)/-ln1.5 보다 클 경우 계속 진행 하면 되겠다. 상수 값이니까 계산해 보면 n이 87이면 멈추면 되겠네.
그러니까 while로 계속 반복 하는거지. 초기값을 10으로 두고 20*(2/3)^n 을 n이 87이 될 때 까지 더하는거지.
ㄱㅅㄱㅅ이거 참 프갤성님들한테 도움 자꾸 받는듯하네ㅠㅠ