for (int i = 0; i < m - 1; i++)
y *= y;
여기서 m=5이면 y^5을 계산하는 것이 아니라 그것보다 휠씬 더 커지기 때문에 sum은 자료형 범위를 넘게 되서 이상한 값이 되고 그것 때문에 문제가 생기는 거 같습니다.
아마 아래와 같이 수정하시면 될 거 같아요.
2331번 - 반복수열
@snrnsidy 님 덕분에 문제를 해결했습니다 감사합니다.
활동내역 확인하니 최근에도 문제풀고 계시는거 같아서 질문좀 드릴 수 있을까 싶어 글 남겼습니다!
솔직하게 차이를 잘 모르겠습니다.
sum 이 int형 범위내에 있고 사실상 문제는 배열의 범위가 많아도 6*9^5 = 36만 정도인데
가장 큰 정수 9 를 5제곱해도 사실상 int형 범위에 영향을 미치는건지 모르겠습니다.
int y = prev % 10;
int t = 1;
for (int i = 0; i < m; i++)
t *= y;
sum += t;
prev = prev / 10;
이부분에서 굳이 sum 에 값을 더해줄 때
int t = 1 라는 변수를 설정해서 해줘야하는 건가요?
왜 m-1 만큼 y*=y 를 해서 더해주면 안되는지 너무 궁금합니다
댓글을 작성하려면 로그인해야 합니다.
njchung99 6년 전
배열을 넉넉하게 잡아줬는데 런타임에러가 어디서뜨는지모르겠습니다...