谢谢你,成为我的星辰@球球
传送门:人见人爱的A,B
思路:这个题其实如果用pow,肯定会爆long long,可以用同余方程,和快速幂取模:
同余方程AC代码:
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cmath>
using namespace std;
typedef long long ll;
int main()
{
int n,m;
while(cin>>n>>m&&(n||m))
{
int s=1;
for(int i=1;i<=m;i++)
{
s=(s*n)%1000;
}
printf("%d\n",s);
}
return 0;
}
快速幂取模:这里我就不讲太多的原理了;看到几篇比较好的原理博客,我就直接借鉴大佬的了;
AC代码:
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio>
#include<iomanip>
#include<algorithm>
using namespace std;
typedef long long ll;
ll quick_mod(ll m,ll n,ll k)
{
if(n==0) return 1;
if(n%2==1)
return m*quick_mod(m,n-1,k)%k;
else
{
ll num=quick_mod(m,n/2,k);
return num*num%k;
}
}
int main()
{
ll a,b,c;
c=1000;
while(cin>>a>>b)
{
ll base=quick_mod(a,b,c);
cout<<base<<endl;
}
return 0;
}
来源:CSDN
作者:千意齐飞
链接:https://blog.csdn.net/weixin_45882303/article/details/104592419