mindol1234   3년 전

1837번 문제에서 입력되는 p의 범위가 매우 커서 수를 문자열로 받아 소수로 나눠 떨어지는지를 각 자릿수마다 판정한다고 나와있습니다.

그런데 아래 코드가 정확히 어떤 원리에 의해 나머지 연산이 가능한건지 알고 싶습니다.

1. 왜 나머지에 10을 곱해서 수식에 더하는가?

2. 10을 곱한 나머지에 각 자리수를 왜 더하는가?

scvhero   3년 전

(a+b)%c = (a%c + b%c)%c 이고 (a*b)%c = (a%c * b%c) %c 이기 때문에 매 루프마다

a % x

((a % x) * 10 +b)%x = (a*10)%x + b%x = (10*a + b)%x

(((10*a + b)%x) * 10 +c )%x = (100*a +10*b +c ) %x

...

순으로 계산이 되어 최종적으로는  (10na + 10n-1b + 10n-2b + c + ... ) % x  가 구해지게 됩니다

그리고 사실 파이썬 같이 bigint 있는 언어 쓰면 그냥 바로 %연산 하면 됩니다


mindol1234   3년 전

답변 감사합니다 :)

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