解题报告:

只贴个代码吧,核心思路是利用二级制,让x^y时从每次乘x变成乘x^(2^k),来将速度提升至O(logy)级别。快速幂详细解释百度去

#include<iostream>
#define ll long long
using namespace std;
int main()
{
    ll x,y;
    while(cin>>x)
    {
        if(x==-1)return 0;
        cin>>y;
        ll ans=1,mo=x;
        while(y)
        {
            if(y%2==1)ans*=mo;
            mo=mo*mo;
            y>>=1;
        }
        cout<<ans<<endl;
    }
}

当然,这题事实上十分简单,数据很水,直接暴力也能过(没看到取模要求的幂基本上都能暴力过)qwq
下为暴力写法,代码量差别其实很小,只有循环那里不一样。快速幂还是可以一学的。

#include<iostream>
#define ll long long
using namespace std;
int main()
{
    ll x,y;
    while(cin>>x)
    {
        if(x==-1)return 0;
        cin>>y;
        ll ans=1,mo=x;
        for(ll i=1;i<=y;i++)
        {
            ans*=mo;
        }
        cout<<ans<<endl;
    }
}