//(a^b)%n #include<iostream> //这里用的是什么方法呢? int modExp(int a,int b,int n) { int t=1,y=a; while(b) { if(b%2==1)t=t*y%n; y=y*y%n; b=b/2; } return t; } //常规 int modexp(int a,int b,int n) { int t=1; for(int i=0;i<b;i++)t=t*a; return t%n; }
int main(void) { int a=0,b=0,n=0; std::cin>>a>>b>>n; std::cout<<modExp(a,b,n)<<std::endl; std::cout<<modexp(a,b,n)<<std::endl; return 0; }
谁能给我讲讲它这个方法是什么数学原理呢? //第二个函数仅为测试正确性设置,不考虑溢出问题
|