51nod1004 n^n的末位数字
基准时间限制: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 }
作者:自为风月马前卒
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。