C/C++编程学习 - 第20周 ⑦ n^n的末位数字

题目链接

题目描述

给出一个整数N,输出N^N(N的N次方)的十进制表示的末位数字。

Input
一个数N(1 <= N <= 109

Output
输出N^N的末位数字

Sample Input

13

Sample Output

3

思路

快速幂(取模),这里给出快速幂取模的模板。

快速幂取模:

ll Quick_Mod(ll a, ll b, ll mod)
{
    ll res = 1, term = a % mod;
    while(b)
    {
        if(b & 1) res = (res * term) % mod;
        term = (term * term) % mod;
        b >>= 1;
    }
    return res;
}

C++代码:

#include<bits/stdc++.h>
using namespace std;
long long solve(long long a, long long b)
{
	long long ans = 1;
	a %= 10;
	while(b)
	{
		if(b & 1) ans = (ans * a) % 10;
		b /= 2;
		a = (a * a) % 10;
	}
	return ans;
}
int main()
{
	long long n;
	while(cin >> n)
		cout << solve(n, n) % 10 << endl;
	return 0;
}
上一篇:深入理解计算机系统_3e 第四章家庭作业(部分) CS:APP3e chapter 4 homework


下一篇:javascript JS递归遍历对象 使用for(variable in object)或者叫for/in和forEach方式