只作为记录用,详细过程可以去b站看视频)
快速幂就是一个用来快速求高次幂的方法,核心思想就是将指数转为二进制,然后遍历这个二进制串:
定义一个ans=1来储存答案,定义一个temp=m(m表示我们要求计算的底数)来储存临时变量
如果该位为1,则ans=ans*temp
每次遍历,更新temp:temp*=temp
举个例子:
求m的t次方的最后一位数?
第一步就是将这个t转为二进制,这边我们用一个队列来储存,更方便一点
第二步就是遍历这个二进制串辣!自己看吧哈哈哈哈哈
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
int m,t;
while(cin>>m>>t)
{
queue<int>s;
while(t!=0)
{
s.push(t%2);
t/=2;
}
int temp=m;
int ans=1;
int len=s.size();
while(len--)
{
if(s.front()==1)
ans*=temp;
s.pop();
temp*=temp;
ans%=10;
temp%=10;
}
cout<<ans<<endl;
}
}