E

来源:互联网 发布:cda数据分析师怎么样 编辑:程序博客网 时间:2024/06/09 14:15
E
Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u
Submit Status Practice HDU 1061

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

234

Sample Output

76          

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.

求n的n次方的最后一位有快速幂对10求余好了
#include<cstdio>int slove(int n,int m,int mod){int ans=1;int beas=n%mod;//进行求余 while(m){//把m级别的复杂度转化为log2(m)的优化转化为((((beas)^2)^2)^2) *ansif(m%2==1){ans=(ans*beas)%mod;}beas=(beas*beas)%mod;m>>=1;//这个是移位相当于m/2 }return ans;}int main(){int n,m,mod,T;scanf("%d",&T);while(T--){scanf("%d",&n);m=n;mod=10;printf("%d\n",slove(n,m,mod));}return 0;}


0 0