51nod1004// 快速幂模板

基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题
 收藏
 关注
给出一个整数N,输出N^N(N的N次方)的十进制表示的末位数字。
Input
一个数N(1 <= N <= 10^9)
Output
输出N^N的末位数字
Input示例
13
Output示例
3

//此算法非常高效,他是按照二进制算的//

秦九昭算法!

#include <bits/stdc++.h>
using namespace std;
long long kuaisu(long long a,long long b)//a是底数,b是指数;
{
    a=a%10;//按位取余
    long long s=1;
    while(b)
    {
        if(b&1)s=(s*a)%10;//看b的二进制的末尾是不是0;
        b>>=1;//相当于b/2;
        a=(a*a)%10;//相当于加倍,
    }
    return s;
}
int main()
{
    int n;
    while(cin>>n)
    {
        int s=kuaisu(n,n);
        cout<<s%10<<endl;
    }
}


阅读更多
个人分类: 快速幂 51nod
上一篇异或运算符的作用
下一篇快速幂的详解
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭