(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년 전 1
1837번 문제에서 입력되는 p의 범위가 매우 커서 수를 문자열로 받아 소수로 나눠 떨어지는지를 각 자릿수마다 판정한다고 나와있습니다.
그런데 아래 코드가 정확히 어떤 원리에 의해 나머지 연산이 가능한건지 알고 싶습니다.
1. 왜 나머지에 10을 곱해서 수식에 더하는가?
2. 10을 곱한 나머지에 각 자리수를 왜 더하는가?