1004 n^n的末位数字

题目来源: 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

幂尾数的循环节为4!学到了新姿势~

知道这个点就直接刚就好。

附AC代码:

 1 #include<iostream>
 2 #include<algorithm>
 3 #include<cmath>
 4 using namespace std;
 5
 6 int main(){
 7     int n;
 8     cin>>n;
 9     int a=n%10;
10     int b=n%4;
11     if(b==0) b=4;
12     int c=pow(a,b);
13     cout<<c%10<<endl;
14     return 0;
15 }

快速幂写法真无愧于这个名字:

 1 #include<stdio.h>
 2 #include<math.h>
 3 int main(){
 4     int n;
 5     scanf("%d",&n);
 6     int m = n%10;
 7     int ans = 1;
 8     while(n){
 9         if(n&1){
10             ans *= m;
11             ans %= 10;
12     }
13         m *= m;
14         m %= 10;
15         n /= 2;
16     }
17     printf("%d\n",ans);
18     return 0;
19 }
时间: 2024-10-09 21:13:57

1004 n^n的末位数字的相关文章

51Nod - 1004 n^n的末位数字

51Nod - 1004 n^n的末位数字 给出一个整数N,输出N^N(N的N次方)的十进制表示的末位数字. Input 一个数N(1 <= N <= 10^9) Output 输出N^N的末位数字 Input示例 13 Output示例 3 题解: 末尾数字,所以在快速迭代幂的时候,只需要考虑末尾数字即可. #include <iostream> #include <cstdio> #include <cstdlib> #include <cstri

51Nod 1004 n^n的末位数字(日常复习快速幂,莫名的有毒,卡mod值)

1004 n^n的末位数字 题目来源: 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 题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!pr

51nod 1004 n^n的末位数字【快速幂】

1004 n^n的末位数字 题目来源: 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 [代码]: #include <bits/stdc++.h> using namespac

n^n的末位数字

题目描述: 给出一个整数N,输出N^N(N的N次方)的十进制表示的末位数字. Input 一个数N(1 <= N <= 10^9) Output 输出N^N的末位数字 首先观察下,可以得出N依次递增时的末尾数字是有规律的,即每20个数为一个循环,{1,4,7,6,5,6,3,6,9,0,1,6,3,6,5,6,7,4,9,0},下面就好做了. 代码如下: 1 #include<stdio.h> 2 int main (void) 3 { 4 int a[20] = {1,4,7,6

nod_1004 n^n的末位数字(二分快速幂)

题意: 给出一个整数N,输出N^N(N的N次方)的十进制表示的末位数字. Input 一个数N(1 <= N <= 10^9) OutPut 输出N^N的末位数字 思路: EASY,,,,,, 代码: int calc(int t,int n){ if(n==0) ret 1; if(n==1) ret t; int s=calc(t,n/2); s=s*s%10; if(n&1){ s=s*t%10; } ret s; } int main(){ int n; cin>>

【 OJ 】末位数字

末位数字 发布时间: 2017年11月12日 20:19   最后更新: 2017年11月12日 20:20   时间限制: 1000ms   内存限制: 128M 描述 给定一个整数n, 求n的n次方的十进制表示的末位数字.(1 <= n <= 1e9); 输入 输入包括若干组测试数据, 以0结束, 0不需要处理. 输入的每一行包括一个整数n. 测试数据数量不大于1e6: 输出 对于输入的每一个n, 在一行中输出一个整数, 表示所要求的末位数字. 样例输入1 3 0 样例输出1 源码 有点水

5北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第一位数字不是0.校外电话又分为本市电话和外地电话两类。拨校外电话需要先拨0,若是本市电话则接着拨8位数字(第一位不是0),若是外地电话则拨3位区码后再拨8位电话号码(第一位不是0)。

答: 电话号码=[校内电话号码|校外电话号码] 校内电话号码=非零数字+3位数字 校外电话号码=[本市号码|外地号码] 本市号码=数字零+8位数字 外地号码=数字零+3位数字+8位数字 非零数字=[1|2|3|4|5|6|7|8|9] 数字零=0 3位数字=3{数字}3 8位数字=非零数字+7位数字 7位数字=7{数字}7 数字=[0|1|2|3|4|5|6|7|8|9] 其中,[ ]意思是或,从校内电话号码或校外电话号码中选择一个:{ }表示重复,两边的数字表示重复次数的下限和上限:=意思是定

js验证连续两位数字递增或递减和连续三位数字相同

<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"> <title></title></head><body><form method="post" class="form-horizontal" role="form" action=&q

北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成

北京某高校可用的电话号码有以下几类:校内电话号码由4位数字组成,第一位数字不是0.校外电话又分为本市电话和外地电话两类. 拨校外电话需要先拨0,若是本市电话则接着拨8位数字(第一位不是0),若是外地电话则拨3位区码后再拨8位电话号码(第一位不是0). 答: 电话号码=[校内电话号码|校外电话号码] 校内电话号码=非零数字+3位数字 校外电话号码=[本市号码|外地号码] 本市号码=数字零+8位数字 外地号码=数字零+3位数字+8位数字 非零数字=[1|2|3|4|5|6|7|8|9] 数字零=0