Rightmost Digit
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) |
Total Submission(s): 6667 Accepted Submission(s): 1721 |
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. |
Author
Ignatius.L
|
思路: long long int 因为已知容易超出限制 ,所以此处一定要注意 ,另外,利用/2的方式进行 这样可以大大缩短程序运行时间。
1 #include<stdio.h> 2 //大数问题 3 long long Solve(long long n) 4 { 5 long long int count=n; 6 long long int result=1; 7 while(count) 8 { 9 if(count%2!=0) 10 { 11 result*=n; 12 if(result>=10) 13 result=result%10; 14 } 15 n*=n; 16 n=n%10; 17 count/=2; 18 } 19 return result; 20 } 21 22 23 int main(int argc, char *argv[]) 24 { 25 long long T,N; 26 scanf("%lld",&T); 27 while(T--) 28 { 29 scanf("%lld",&N); 30 printf("%lld\n",Solve(N)); 31 32 } 33 return 0; 34 }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。