33,008
社区成员
发帖
与我相关
我的任务
分享
mov eax, m
mov esi, n
mov edi, mod
xor edx, edx
div edi
mov eax, 1
// edx = m % mod
// eax = 1
// edi = mod
bsr ecx, esi
loop1:
bt esi, ecx
jnc loop2
mul edx
div edi
mov eax, edx
loop2:
move ebx,eax
mov eax, edx
mul edx
div edi
mov eax, ebx
sub ecx, 1
jnc loop1
mov eax, m
mov esi, n
mov edi, mod
xor edx, edx
div edi
mov eax, 1
// edx = m % mod
// eax = 1
// edi = mod
bsr ecx, esi
loop1:
bt esi, ecx
jnc loop2
mul edx
div edi
mov eax, edx
loop2:
push eax
mov eax, edx
mul edx
div edi
pop eax
sub ecx, 1
jnc loop1
mov eax, m
mov esi, n
mov edi, mod
xor edx, edx
div edi
mov ebx, edx
mov eax, 1
// ebx = m % mod
// eax = 1
// edi = mod
bsr ecx, esi
loop1:
bt esi, ecx
jnc loop2
mul ebx
div edi
mov eax, edx
loop2:
push eax
mov eax, ebx
mul ebx
div edi
mov ebx, edx
pop eax
sub ecx, 1
jnc loop1
mov eax, m
mov esi, n
mov edi, mod
xor edx, edx
div edi
mov ebx, edx
mov eax, 1
// ebx = m % mod
// eax = 1
// edi = mod
bsr ecx, esi
loop1:
bt esi, ecx
jnc loop2
mul ebx
div edi
loop2:
push eax
mov eax, ebx
mul ebx
div edi
mov ebx, edx
pop eax
sub ecx, 1
jnc loop1
mov eax, m
mov esi, n
mov edi, mod
xor edx, edx
div edi
mov ebx, edx
mov eax, 1
// ebx = m % mod
// eax = 1
// edi = mod
loop1:
bsr ecx, esi
bt esi, ecx
jnc loop2
mul ebx
div edi
loop2:
push eax
mov eax, ebx
mul ebx
div edi
mov ebx, edx
pop eax
loopnc loop1
int f(int m,int n, int mod){
int mul=m%n;
int r=1;
while(n){
if(n&1){r*=mul;r%=mod;}
mul*=mul;mul%=mod;
n>>=1;
}
return r;
}