200!+300!+400!를 c언어로 계산해서 표시할려면 어떻게 해야하나요?
프로그램설명좀해주세요
-----------------------------------------------------------------------------
구해드릴 수는 있는데 파이썬으로 짜면 정말 간단히 구할수 있거든요.
c언어에서도 bigint같은 라이브러리를 사용하면 금방 구할 수 있습니다.
하지만 그런 라이브러리를 쓰지 않고 구할 수 있는 방법을 알려드리겠습니다.
우선 큰수를 나타내는 아주 원시적인 한가지 방법입니다.
(나중에는 좀더 나은 방법을 생각해 내면 되겠습니다.)
정수 배열을 1000개 짜리를 잡습니다.
배열의 방한개 마다 10진법의 한 자리씩을 보관합니다.
예를 들어서 1234 (일천 이백 삼십 사)라는 수는
data1[0]=4; data1[1]=3; data1[2]=2; data1[3]=1;
과 같은 방법으로 나타냅니다.
[1] 곱셈을 어떻게 하느냐?
1234*123을 해 보겠습니다. data1의 각 셀에 123을 모두 각각 곱합니다.
그러면 data1[0] 은 492, data1[1]은 369, data1[2] 는 246, data1[3]은 123 의 값을 가지고 있습니다.
이제 data1[0]에는 2만 남기고 49를 data1[1]에 더해 줍니다.
그러면 data1[1] 의 값은 418이 됩니다.
data1[1]에는 8만 남기고 41을 data1[2] 에 더해 줍니다.
그러면 data1[2] 의 값은 287이 됩니다.
data1[2]에는 7만 남기고 28을 data1[3] 에 더해 줍니다.
그러면 data1[3] 의 값은 151이 됩니다.
data1[3] 에는 1만 남기고 15를 data1[4] 에 더해 줍니다.
그러면 data1[4] 의 값은 15가 됩니다.
data1[4] 에는 5만 남기고 1을 data1[5] 에 더해 줍니다.
그러면 data1[5] 의 값은 1이 됩니다.
위의 결과는 151782 로 제대로 나왔습니다.
이런 방식으로 곱셈을 해 나가면 됩니다.
[2] 덧셈도 같은 방법으로 해 나갑니다.
파이썬 프로그램 입니다. 정말 간단 하지요!!
def fac(n):
f=1
for x in range(1,n+1):
f=f*x
return f
print fac(200)+fac(300)+fac(400)
답입니다.
64034522846623895262347970319503005850702583026002959458684445942802397169186831
43627847864746326467629435057503585681084829816288351743522896198864680299793734
16541508381624264619423523070462443250151144486708906627739149181173319559964407
09549671345290783077834651351846832963742092370174761256055801454889426126505025
18685952704840143086515980930891270196352167685951316037057576646162142439666266
79699575851498167752764342269085663517365358636821564920521673368040439201169963
28496738035153787510930353505809106488781745199687507829633021854697472161801200
24473165192643468599654901856569821142160467123349971500178509567890804622657017
13057417692463313450754135646282551685144608489681563818768654635069499745398989
54109322820875124655980679885267853091768969537647966403136449735581675845778922
222789623703897374720000000000000000000000000000000000000000000000000
'c·c++ > c 프로그래밍' 카테고리의 다른 글
비쥬얼 씨++ 64비트 정수사용법 (0) | 2012.01.18 |
---|---|
문자열은 어디에 저장되는가 (0) | 2012.01.18 |
wxWidgets이 뭔가요? (0) | 2012.01.14 |
폰트로 사각형 그리기 (0) | 2012.01.14 |
Visual Studio 사용법 (0) | 2011.12.31 |