题目来源: Author Ignatius.L (Hdu 1061)
基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题
给出一个整数N,输出N^N(N的N次方)的十进制表示的末位数字。
Input
一个数N(1 <= N <= 10^9)
Output
输出N^N的末位数字
Input示例
13
Output示例
3
李陶冶 (题目提供者)
C++的运行时限为:1000 ms ,空间限制为:131072 KB 示例及语言说明请按这里
一道快速幂的裸题
但是可以通过打表找循环节的规律
1 #include<iostream>
2 #include<cstdio>
3 #include<cstring>
4 #include<cmath>
5 #define LL long long
6 using namespace std;
7 const LL MAXN=200000001;
8 inline LL read()
9 {
10 char c=getchar();LL flag=1,x=0;
11 while(c<'0'||c>'9') {if(c=='-') flag=-1;c=getchar();}
12 while(c>='0'&&c<='9') x=(x*10+c-48),c=getchar(); return x*flag;
13 }
14 LL a[15]={1,1,4,4,2,1,1,4,4,2};
15 LL n;
16 int main()
17 {
18 n=read();
19 LL p=n%10;
20 n=n%a[p];
21 if(n==0)
22 {
23 LL ans=1;
24 for(LL i=1;i<=a[p];i++)
25 ans=ans*p;
26 cout<<ans%10;
27 }
28 else
29 {
30 LL ans=1;
31 for(LL i=1;i<=n;i++)
32 ans=ans*p;
33 cout<<ans%10;
34 }
35 return 0;
36 }