我的描述
本菜鸟又又又来写简单题的题解了。(>﹏<)
题目描述
输入a和b和p,输出a的b次方和q取余。
样例
输入样例1:
3 4 9
输出样例1:
0
输入样例2:
18 2 11
输出样例2:
5
快速幂
这道题要用快速幂来做。(不然就会爆掉)
快速幂就是一个快速算次方的方法。
用for循环模拟次方,然后每乘一次就取余。
C++ 代码(60分)
#include<iostream>
#include<cmath>
using namespace std;
long long a,b,q,sum=1;
int main(){
cin>>a>>b>>q;
for(int i=0;i<b;i++){
sum*=a;
sum%=q;
}
cout<<(sum%q)<<endl;
return 0;
}
先别抄,会T掉2个点。
那怎吗优化呢???
减小规模就可以了。
C++ 代码(100分)
#include<iostream>
#include<cmath>
using namespace std;
long long a,b,q,sum=1;
int main(){
cin>>a>>b>>q;
while(b>0){
if(b%2==1)sum=sum*a%q;
b/=2;
a=a*a%q;
}
cout<<(sum%q)<<endl;
return 0;
}
本菜鸟的第三篇题解,支持一下再走呗§( ̄▽ ̄)§😜