指数取余( (m^n)%k=? )

描述:m,n,k,为整数,求 (m^n)%k=?


正经代码:

#include<stdio.h>
using namespace std;
int main(){
    int m,n,k;
    scanf("%d%d%d",&m,&n,&k);
    int ans=1;
    for(;n;n>>=1,m=(long long)m*m%k)
        if(n&1)
            ans=(long long)ans*m%k;
    printf("%d\n",ans);
    return 0;
}

代码牛皮*:

#include<stdio.h>
#include<iostream>
using namespace std;
int main(){
    int m,n,k;
    scanf("%d%d%d",&m,&n,&k);
    int ans=1;
cout<<"m="<<m<<"  n="<<n<<"  k="<<k<<endl;
    for(;n;n>>=1,m=(long long)m*m%k){
cout<<"  --------\n  n="<<n<<endl<<"  n>>1 ="<<(n>>=1)<<endl;
cout<<"  m="<<m<<endl;
        if(n&1)
            ans=(long long)ans*m%k;
cout<<"  n&1="<<(n&1)<<endl<<"  ans="<<ans<<endl;
    }
    printf("%d\n",ans);
    return 0;
}

运行结果1,2,3,:


 


 

 

猜你喜欢

转载自blog.csdn.net/sodacoco/article/details/81587705
今日推荐