Rightmost Digit
Time Limit: 1 Sec Memory Limit: 32 MBSubmit: 21 Solved: 5
[ Submit][ Status][ Web Board]
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.
Source
#include <stdio.h>
int main()
{
long long n,x;
long long m;
while (~scanf("%lld",&n))
{
while(n--)
{
scanf("%lld",&x);
m = x % 10;
if ( m == 1 || m == 5 || m == 6 || m == 0)
{
printf("%lld\n", m);
}
if ( m == 2)
{
if ( x % 4 == 0)
{
printf("6\n");
}
if ( x % 4 == 1)
{
printf("2\n");
}
if ( x % 4 == 2)
{
printf("4\n");
}
if (x % 4 == 3)
{
printf("8\n");
}
}
if ( m == 3)
{
if ( x % 4 == 0)
{
printf("1\n");
}
if ( x % 4 == 1)
{
printf("3\n");
}
if ( x % 4 == 2)
{
printf("9\n");
}
if (x % 4 == 3)
{
printf("7\n");
}
}
if ( m == 4)
{
if ( x % 2 == 0)
{
printf("6\n");
}
if ( x % 2 == 1)
{
printf("4\n");
}
}
if ( m == 7)
{
if ( x % 4 == 0)
{
printf("1\n");
}
if ( x % 4 == 1)
{
printf("7\n");
}
if ( x % 4 == 2)
{
printf("9\n");
}
if (x % 4 == 3)
{
printf("3\n");
}
}
if ( m == 8)
{
if ( x % 4 == 0)
{
printf("6\n");
}
if ( x % 4 == 1)
{
printf("8\n");
}
if ( x % 4 == 2)
{
printf("4\n");
}
if (x % 4 == 3)
{
printf("2\n");
}
}
if ( m == 9)
{
if ( x % 2 == 0)
{
printf("1\n");
}
if ( x % 2 == 1)
{
printf("9\n");
}
}
}
}
return 0;
}
有坑啊 如果数非常非常大 long long 都不支持了。。。
题目有没有说范围。。。。
所以要用数组了。。。。。