您的位置:首页 > 其它

HDU Rightmost Digit

2014-12-10 01:06 531 查看
题目描述:

给出一个n,求n^n结果最右边的数字是什么?

问题分析:

最右边的数字,是n最右边的数字进行乘法运算得到的,所以只要计算最右边数字的幂方就行了。

当n很大的时候,不可能将最右边数字相乘结果算出来,只能通过一定的规律来处理。

最右边的数字假设为m,则m的范围为1、 2 、 3 、... 、 8 、9 、0;

m = 1;无论多少都是1

m = 2; 则出现 2   4   8   6   2

m = 3; 则出现3   9   7   1   3

m = 4; 则出现4   6   4

m = 5 、6 ,则出现 5   、  6

m = 7; 则出现7   9   3   1   7

m = 8; 则出现8   4   2   6   8

m = 9; 则出现9   1   9

m = 0;为 0;

可以得出规律,一个数字的幂方,是在周期为4的循环中。所以只要判断最右边数字的幂方和4的余数就可以了。

#include <stdio.h>

#include <math.h>

/*

1 1

2 4 8 6 2

3 9 7 1 3

4 6 4

5 5

6 6

7 9 3 1 7

8 4 2 6 8

9 1 9

0 0

*/

int main()

{

    unsigned long int n;

    int i, m;

    scanf("%d", &i);

    while(i > 0)

    {

        scanf("%ld", &n);

        m = n % 10;

        n = n % 4;

        if (n == 0) n = 4;

        printf("%d\n", pow(m, n));

        --i;

    }

    return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c hdu