dcds2002   2년 전

이게 봐도 시간 초과가 날 코드는 아닌거같은데 시간초과가 나네요

djm03178   2년 전

https://www.acmicpc.net/board/... 랑 똑같은 문제입니다. 500!이 얼마나 큰 수라고 생각하세요? 과연 long long이 이걸 표현할 수 있을까요?

dcds2002   2년 전

감사합니다. 오버플로우인 것은 알았습니다. 그래서 unsigned long long 을 서핑을 통해 찾아서 해봣는데도 안되네요 ㅠ

djm03178   2년 전

그러면 unsigned long long은 어디까지 표현이 가능할까요?

djm03178   2년 전

감이 잘 안 오시는 것 같으니, 수치로 보여드리겠습니다.

500!은 1220136825991110068701238785423046926253574342803192842192413588385845373153881997605496447502203281863013616477148203584163378722078177200480785205159329285477907571939330603772960859086270429174547882424912726344305670173270769461062802310452644218878789465754777149863494367781037644274033827365397471386477878495438489595537537990423241061271326984327745715546309977202781014561081188373709531016356324432987029563896628911658974769572087926928871281780070265174507768410719624390394322536422605234945850129918571501248706961568141625359056693423813008856249246891564126775654481886506593847951775360894005745238940335798476363944905313062323749066445048824665075946735862074637925184200459369692981022263971952597190945217823331756934581508552332820762820023402626907898342451712006207714640979456116127629145951237229913340169552363850942885592018727433795173014586357570828355780158735432768888680120399882384702151467605445407663535984174430480128938313896881639487469658817504506926365338175055478128640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

이고, unsigned long long이 표현할 수 있는 최대의 수는 18446744073709551615 입니다. 비교가 되시나요?

dcds2002   2년 전

아... 감사합니다. 근데 저 수를 표현 할수 있는 데이터형이 존재한가요??

djm03178   2년 전

C++에는 없습니다. 직접 배열 등을 이용해서 큰 수를 표현할 수 있는 자료형과 그 연산들을 구현할 순 있겠네요.

하지만 이 문제는 그렇게 풀라고 만든 게 아닙니다. 팩토리얼을 전부 계산하지 않고 뒤에 0이 몇 개 나오는지만 계산하는 방법을 생각해보세요. 질문 게시판의 다른 질문들도 참고하시고요.

댓글을 작성하려면 로그인해야 합니다.