apple2365507   6년 전

알고리즘상으로는 문제가 없는데 int로 하면 1 9 대입했을때부터 - 값이들어가고 unsigned long long으로 하면 1 11부터 -값 또는 0 값이 들어가서 그런데 더 큰 자료형이 있을까요...?


jh05013   6년 전

j에 답 전체가 아니라 답을 14579로 나눈 나머지만 저장해 주면 됩니다. 보통 이렇게 "~로 나눈 나머지를 출력하시오"라고 하는 이유는 실제 답이 압도적으로 커질 수 있기 때문이고, 안 그러면 큰 수 자료구조를 강제로 구현해야 하는 문제가 되며 심지어 시간 내에 답을 못 구할 수도 있습니다.

apple2365507   6년 전

음 jh05013님 말씀대로

for (i = a; i <= b; i++ )
{
j = j * num(i);

j= j%14579;
}
if(a<b&&a>=1&&b<=1000)
printf("%d\n", j);

로 출력을 해봤는데 1 238 부터 값이 또 0으로 출력되네요..

jh05013   6년 전

놀랍게도 1 238을 넣으면 0이 맞습니다.

apple2365507   6년 전

그러면 죄송한데 혹시 1 238 부터 1 999까지 다 0인가요??

apple2365507   6년 전

아 죄송합니다 1 239면 어차피 곱해도 다 14579로 나누어 떨어지겠네요 다 0이군요

jh05013   6년 전

보통은 계속 0이 나오는 걸 피하려고 1000000007 같은 소수로 나눈 나머지를 출력하라고 하는데, 이 문제는 무슨 이유에선지 합성수가 들어갔네요.

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