前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >51nod1004 n^n的末位数字

51nod1004 n^n的末位数字

作者头像
attack
发布2018-04-11 16:38:56
6270
发布2018-04-11 16:38:56
举报

题目来源: Author Ignatius.L (Hdu 1061)

基准时间限制:1 秒 空间限制:131072 KB 分值: 5  难度:1级算法题

给出一个整数N,输出N^N(N的N次方)的十进制表示的末位数字。

Input

代码语言:javascript
复制
一个数N(1 <= N <= 10^9)

Output

代码语言:javascript
复制
输出N^N的末位数字

Input示例

代码语言:javascript
复制
13

Output示例

代码语言:javascript
复制
3

李陶冶 (题目提供者)

C++的运行时限为:1000 ms ,空间限制为:131072 KB 示例及语言说明请按这里

一道快速幂的裸题

但是可以通过打表找循环节的规律

代码语言:javascript
复制
 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 }
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-10-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档