51nod 1004 n^n的末位数字

1004 n^n的末位数字

题目来源: 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 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
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;
}

 

 

 

你可能感兴趣的:(51nod)