题目链接
题目描述
给出一个整数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;
}