master1511   7년 전

어디가 틀렸는지 잘 모르겠습니다.

portableangel   7년 전

우선, 가능한 모든 경우의 개수가 너무 커 int형 변수인 t에 담을 수가 없습니다. (int 최대값은 2^31-1)

또한 이를 long long 자료형으로 고친다 해도, 연산 횟수가 너무 많아 시간초과가 나게 됩니다.

dynamic programming에 대해 찾아보시는 것을 추천합니다.

master1511   7년 전

정말 감사합니다. 말씀해주셧던 동적 프로그래밍을 사용해서 짜봤습니다.


하지만 이번에도 틀렸다고 나오네요...어느 부분이 문제인걸까요..


바쁘신데 번거롭게 해드려 죄송합니다.

portableangel   7년 전

ze 함수의 반환값이 int로 되어 있는데, 오버플로가 날 것 같습니다.

또한 pow 함수로 실수를 계산하는 과정에서 어떤 오차가 있을 지 모르니, 2^n을 사용하고 싶으시다면 (1LL<<n)과 같이 정수로 사용해주시는 편이 안전합니다.

master1511   7년 전

다 고쳤는데도 틀렸다고 나오네요..


대채 어디에 제가 보지못한 실수가 있는걸까요......ㅠ

yohan5050   7년 전

위에 portableangel님이 적어두신 것 처럼

2<<(n-1)이 아니라 2LL<<(n-1)로 하셔야 합니다.

저도 정확히 알지는 못하지만 

제가 알기로는 그냥 2로 쓸 경우 int형 정수(32bit)이기 때문에 

0000 0000 0000 0000 0000 0000 0000 0010 을 shift left(<<)하는 것이라  

아무리 많이 <<해도 int형 범위를 넘어갈 수 없습니다. 

그래서 64bit짜리 정수 자료형인 2LL을 가지고 하셔야 합니다.

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