PGR21.com
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
Date 2011/05/18 21:38:17
Name Afterglow
Subject C언어.. 5^1000 계산하기..


배열을 이용하고..

진짜 사람이 곱셈하는 방법처럼.. 해야 하는건 어렴풋이 알겠는데..

정확한 방법을 알기가 어렵네요..

어떤식으로 접근 해야 하나요??

너무 큰 숫자라 엄두가 안나네요.. ㅜㅜ

도와주시면 은혜 잊지 않겠습니다..

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
11/05/18 21:49
수정 아이콘
저도 잘 몰라서 묻는건데.. 그냥 forloop 1000번 돌리면 안되나요? 구지 배열을 써야 하는 이유가 먼지..
zergadis
11/05/18 21:51
수정 아이콘
포문 1000번하면 될듯하네요!!

5를 계속 곱해서 더한값을 누적해서 1000번!!
11/05/18 22:02
수정 아이콘
음.. 방금 돌려보니 5^1000이 너무 커서 double로도 표현이 안되는게 문제인가보군요.
아마 변수를 2개 이상 써서 끊어서 출력해야 하는것 같은데.. 그래서 배열을 이야기 한것 같군요.
11/05/18 22:08
수정 아이콘
5^1000 을 윈도우 계산기로 계산하면 9.3326361850321887899008954472382e+698 이 나옵니다. 거의 700자리의 숫자지요 어마어마 하지 않습니까? C에서 사용하는 정수형의 int는 32bit 에서 기껏 40억 정도가 한계입니다. 한 10자리수쯤 되지요.
지금 같은 경우에는 기본 변수로는 계산할수 없고 직접 만들어야 합니다. 꼭 필요하고, 프로그래밍 연습을 하기에도 좋은 문제기 때문에 자료도 많이 있을겁니다. 구글에서 BigInt 를 키워드로 검색해보세요. 간단히는 질문자분 말씀처럼 배열로 사람이 곱셈하듯이 만들면 됩니다. 배열의 한요소를 숫자의 자릿수로 생각하고, 곱해서 숫자를 만들고, 자릿수에 맞춰서 더하고, 자릿수 올림을 반영하고, 이러한 일련의 과정을 직접 짜면 됩니다. 물론 제대로 만드는 것은 더 복잡한지라 저도 잘 모르겠네요 ;;
그리고 사족인데, DC 프로그래밍갤에가면 BigInt의 달인 '공비'님이 있습니다. BigInt 프로그램으로 힛갤에 글을올린 양반이지요 ㅡ_ㅡ;;
11/05/18 22:14
수정 아이콘
음..대충 배열(1000)개 잡고
다 0으로 만들어 준다음에
for loop 2개를 돌려주면서
그 안에서 각 배열을 아랫자리부터 5를 곱해주고
만약 곱해서 숫자가 10이 넘어가면 나머지만 남겨주고 윗 자리숫자에는 10으로 나눈 수를 더해줍니다.
이 과정을 for loop 안에서 하면 되겠네요.
Afterglow
11/05/18 22:22
수정 아이콘
음.. 디시 힛갤가서 공비님꺼 보고왔는데..
2의 10억승을 구하는 프로그램을 짜셨던데.. -_-;;쿨럭;
엄청나네요..

답글달아주신 모든분들 감사합니다.
since98 님이 써주신 방법 들으니까 할수 있을것 같기도 해서 도전해보고 오겠슴다!
감사합니당!!
11/05/18 23:04
수정 아이콘
공비님의 프로그램은 이중 루프는 필히 해야 되는 상태서 어떻게 3억 * 10억의 시간 복잡도를 각오하고 저걸 돌릴 생각을 했을까요 무섭네요-_-;;;;;;
11/05/18 23:37
수정 아이콘
아마 DFT를 이용해서 계산하지 않을까요? 이 경우 1회 곱의 시간 복잡도는 nlogn입니다.
지구사랑
11/05/18 23:20
수정 아이콘
C로 짜는 것과는 직접 상관은 없지만... Python은 임의의 길이의 정수를 지원합니다. 이걸로 미리 정답을 구한 다음 C 결과와 비교해 보는 것도 괜찮을 듯 합니다만...

PS) 방금 Python으로 해보니 (5**1000),
93326361850321887899008954472381716961709144637170802462171433979596691097577563
44544403270978811023595949899303242426242154875213540323948415208172039307562344
10666138325150273995075985901831511100490796265113118240512514795933790805178271
12541510381069837885442648111946981422866095922201766291044279845616944888714746
65280063283684526474292618298621652027931952894936071178506636687410654398055307
18136320599844826041954101213229629869502194514609904214608668361244792952034826
86461765792691604742006593638904173789582211836507804555662844427392538751712785
47967815563464037148776817668998553920692654394240087119736747017498626266907472
96762535803929376233833981046927874558605253696441650390625
이랍니다. 총 699자리네요. 그리고 시간은 의외로 거의 걸리지 않네요. 1초도 안 되는 것이, 정말 잘 짠듯.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
105276 미분기하학 질문입니다. [1] 오티엘라3354 11/05/19 3354
105275 [축구공] 뉴폴라리스 1000 vs 낫소 돌파 21 [4] 김병장님2566 11/05/19 2566
105274 EPL 질문이요~ [15] 후지카와 큐지1798 11/05/19 1798
105272 던파 캐릭 추천 부탁드립니다! [10] Cand1666 11/05/19 1666
105271 유게의 올림픽 야구 결승을 보고 나서 궁금한 점(헷갈리는 점)이 있습니다. [5] I아이유U1712 11/05/19 1712
105269 남자 슴가 운동 질문입니다~ 살집이 있으면 슴가운동 하면 안되나요? [2] 육식코끼리2153 11/05/19 2153
105268 문명4 공식 매뉴얼같은 자료 구할곳 없나요. [4] 축구사랑3373 11/05/19 3373
105267 우리나라 재벌문제 질문드립니다. [5] worcs1698 11/05/19 1698
105266 규칙적인 운동을 하게되면 몸이 가벼워 지는게 사실인가요? [12] 꽃을든남자3382 11/05/18 3382
105265 홈쇼핑이나 전화로 보험 신청 질문이요 [3] 너이리와봐1722 11/05/18 1722
105264 지금 나오는 성시경 무릎팍도사 질문드립니다. [4] 비디오드롬2065 11/05/18 2065
105262 예매전쟁에서 승리하는 법이 간절합니다. [4] airmoo2051 11/05/18 2051
105261 카톡 질문좀하겠습니다. [3] 초보교사2104 11/05/18 2104
105260 대전 근교 휴양림이나 펜션 추천해주세요 [3] 크흠..5114 11/05/18 5114
105259 멘토링 하기 힘드네요... ㅠ [8] 클레멘티아2047 11/05/18 2047
105258 스1 테란 배럭 더블 빌드를 알고 싶습니다. [4] Dizzy5744 11/05/18 5744
105256 오만한 질문 하나 할게요. [60] jinsw04242564 11/05/18 2564
105255 소개팅경험 많으신 분 계신가요?? 정말 궁금한 점이 있네요.. [4] snut1713 11/05/18 1713
105254 핸드폰 위약금 지급에 대해 궁금합니다. [12] 드록신2484 11/05/18 2484
105250 와우! kies 이 프로그램 때문에 정말 환장하겠네요..;; [9] snut2118 11/05/18 2118
105249 실존하는 일본 만화책 속의 장소나 사물이 있나요? [9] CrazyNansa2387 11/05/18 2387
105248 C언어.. 5^1000 계산하기.. [10] Afterglow2463 11/05/18 2463
105247 두 달 후면 제 첫아이가 태어납니다. [25] 영혼의 귀천2853 11/05/18 2853
목록 이전 다음
댓글

+ : 최근 6시간내에 달린 댓글
+ : 최근 12시간내에 달린 댓글
맨 위로