hdu-1061 Rightmost Digit

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hdu-1061 Rightmost Digit相关的知识,希望对你有一定的参考价值。

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1061

题目类型:

水题

题意概括:

求n的n次方的个位数。

解题思路:

因为N的范围太大,所以我通过对位数为1-9的数进行20次次方打表,发现他们的循环节不是4,就是4的因子,所以我对位数为1-9进行打表四次,然后对输入的数只判断个位数,然后判断这个数在第几循环节并输出即可。

题目:

Rightmost Digit

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 55914    Accepted Submission(s): 21129


Problem Description
Given a positive integer N, you should output the most right digit of N^N.
 

 

Input
The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.
Each test case contains a single positive integer N(1<=N<=1,000,000,000).
 

 

Output
For each test case, you should output the rightmost digit of N^N.
 

 

Sample Input
2
3
4
 

 

Sample Output
7
6
 
Hint
In the first case, 3 * 3 * 3 = 27, so the rightmost digit is 7. In the second case, 4 * 4 * 4 * 4 = 256, so the rightmost digit is 6.
 
# include <stdio.h>
# include <string.h>
int main ()
{
    int i,j,t,n,x,y;
    int a[10][10];
    memset(a,0,sizeof(a));
    for(i=1;i<10;i++)
    {
        a[i][1]=i;
        for(j=2;j<5;j++)
        {
            a[i][j]=a[i][j-1]*i%10;
        }
        a[i][0]=a[i][4];
     }
     scanf("%d",&t);
     while(t--)
     {
         scanf("%d",&n);
         x=n%10;
         y=n%4;
         printf("%d\n",a[x][y]);
     }
} 

 

以上是关于hdu-1061 Rightmost Digit的主要内容,如果未能解决你的问题,请参考以下文章

HDU 1061 Rightmost Digit(找规律)

hdu 1061 Rightmost Digit

HDU 1061 [Rightmost Digit] 数学方法

hdu-1061 Rightmost Digit

HDU-1061-Rightmost Digit

hdu1061Rightmost Digit(快速幂取余)