题目来源: Author Ignatius.L (Hdu 1061)
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题
Problem Description:
给出一个整数N,输出N^N(N的N次方)的十进制表示的末位数字。
Input
一个数N(1 <= N <= 10^9)
Output
输出N^N的末位数字
Input示例
13
Output示例
3
思路: 本题其实是一个找规律的题,把末尾可能的十个数全枚举出来看,,即可
/*
规律题一个数的次幂的最末尾一个数字会每四个循环一次
0: 0 0 0 0 0 0 0 0
1: 1 1 1 1 1 1 1 1
2: 2 4 8 6 2 4 8 6
3: 3 9 7 1 3 9 7 1
4: 4 6 4 6 4 6 4 6
5: 5 5 5 5 5 5 5 5
6: 6 6 6 6 6 6 6 6
7: 7 9 3 1 7 9 3 1
8: 8 4 2 6 8 4 2 6
9: 9 1 9 1 9 1 9 1
*/
AC代码:
#include <stdio.h>
#include <iostream>
#include <algorithm>
#include <string.h>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <math.h>
using namespace std;
typedef long long ll;
/*
规律题一个数的次幂的最末尾一个数字会每四个循环一次
0: 0 0 0 0 0 0 0 0
1: 1 1 1 1 1 1 1 1
2: 2 4 8 6 2 4 8 6
3: 3 9 7 1 3 9 7 1
4: 4 6 4 6 4 6 4 6
5: 5 5 5 5 5 5 5 5
6: 6 6 6 6 6 6 6 6
7: 7 9 3 1 7 9 3 1
8: 8 4 2 6 8 4 2 6
9: 9 1 9 1 9 1 9 1
*/
int main(){
int n, a, b, ans;
scanf("%d", &n);
a = n % 10;
b = n % 4;
// printf("(%d,%d)", a, b);
if(b) ans = pow(a, b);
else ans = pow(a, 4);
printf("%d\n", ans % 10);
return 0;
}