md2543   2년 전

안녕하세요. 혼자서 c언어를 공부하고 있는 학생입니다.


1011번문제를 해결하는 중 궁금한 것이 생겼는데요.

문제 해결에 쓰이는 변수들을 int로 선언 했을 때는 시간초과로 오답처리 되었고,

long으로 선언 했을 때는 정답으로 처리되었습니다.


그래서 구글에 int와 long의 차이점을 찾아봤는데 '컴파일러 혹은 운영체제에 따라서 달라진다' 인것 같더라구요.

그런데 운영체제에 따라 달라지는 것은 int와 long의 크기의 차이라고 생각되는데 왜 시간초과라는 에러가 생기는 거죠?

md2543   2년 전

혹시나 해서 소스도 올릴게요.

md2543   2년 전

그리고 방금 6064번 문제 (https://www.acmicpc.net/proble...)를 푸는데 

이번에는 오히려 long으로 선언을 하면 시간초과가 나오고 

int로 선언해주니 정답처리 되네요...

chal728   1년 전

전 c++인데, int로 할때 계속 시간초과 뜨다가 변수만 long로 바꿧더니 정답되더라구요

저도 너무 궁금해요 ㅜㅜ

po10003   1년 전

2017-07-13 22;01;07.PNG

아마 백준 채점 프로그램이 UNIX로 채점을 해서가 아닐까요

po10003   1년 전

아 알았다


po10003   1년 전

위 부분에서 y-x가 가장 클 때

즉 y가 2^32-1 이고 x가 0일때

tot는 2^31-1보다 작게 됩니다

근데 2^31-1보다 커지기 직전에 

cnt를 계속 더해주기 때문에

int형 범위를 넘는거죠.

근데 왜 시간초과인지는 모르겠다ㅠ

po10003   1년 전

제가 써 놓고도 뭔 소린지 모르겠네요

죄송합니다ㅜㅜ

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