TZOJ 6916: 小明的数学课(1) 快速幂

描述

一天数学课,老师给小明出了一道题,小明想了半天都不知道如何解决。现在小明想找你用编程的方法解决这个问题。问题如下:已知两个正整数m,n,求m的n次方的个位的数字。(1<=m<=1018,1<=n<=1018

输入

两个正整数m,n,中间用空格隔开。

输出

m的n次方的个位的数字。

样例输入

 2 3

样例输出

8
不测试数据的结果。。。照着快速幂模板套,以为是对1e18取模,结果才反应过来个位数是对10取模,喜提好多WA 555555QAQ
#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
ll a,b;
ll qp(ll a,ll b)
{
    if(b==1)return a%10;
    if(b%2==0){
        int t = qp(a,b/2);
        return t*t%10;
    }else{
        int t = qp(a,b/2);
        t = t*t%10;
        t = t*a%10;
        return t;
    }
}
int main()
{
    cin>>a>>b;
    cout<<qp(a,b);
     return 0;
}

 

posted @ 2022-10-19 19:04  CRt0729  阅读(71)  评论(0编辑  收藏  举报