kwldjs1023   2년 전

무언가 틀린 이유가 있을텐데 잘 모르겠습니다ㅠ

frog123   2년 전

수식에 나눗셈이 있어서 %=10007한 값과 계산 시 문제가 생기는 것 같네요.

_

예를 들어, (10,010/2)%10,007 = 5,005입니다.

근데 (10,010%10,007)/2 = 1.5가 됩니다. 

_

실제로 구하고 싶은 값은 (com[1]*10/1*11/2*12/3*...)%10,007 이지만

위 수식에서는 ((com[1]*10/1%10,007)*11/2%10,007)*12/3%10,007로 계산하고 있습니다.

그래서 com[i]값이 10,007을 넘긴 이후부터 이상한 값이 나옵니다.

angelsiwoo2   2년 전

제가 중복조합을 이용하여 계산한 코드입니다.

틀린 부분) 중간중간 %10007을 해 주시면 중간에 실수값이 나오는 경우가 생깁니다. 그렇기에 마지막에 %10007을 해 주어야 합니다. 하지만, 이렇게 한다면 long long의 범위를 중간에 넘어갑니다. long을 사용하셨는데, long long을 사용하는 것이 이롭습니다. long long을 이용하여 풀고 나면 최대 자리 수인 1000을 입력받은 경우를 기준으로, 8번째 계산(*1002/8*1001/9)부터 long long을 넘어간다는 것을 계산해보면 구할 수 있습니다. 그렇기에 7에서 %10007을 하여 숫자를 축소시키고, 그 후 10007을 더해나아가는 값들 중, 72의 배수인 것을 구해야 합니다. 이렇게 하면 답을 구할 수 있습니다. 도움이 되었기를 바랍니다. 중간에 인위적으로 조작하지 않으면 해당 문제는 풀기 어려운 것 같습니다.

angelsiwoo2   2년 전

추가적으로, unsigned long long을 사용하는 것을 기준으로 남긴 댓글임을 알려드립니다.

angelsiwoo2   2년 전

일반적인 long/long long을 사용하시면 그 범위를 넘어가는 값이 나오는 구간이 달라질 수 있습니다.

kwldjs1023   2년 전

와 감사합니다! 

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