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 namespace std;
#define LL long long
LL n;

int main()
{
   while(~scanf("%lld",&n))
   {
       LL ans=1,tmp=n;//改变位数,所以要临时变量
       while(n)
       {
           if(n&1)
           {
               ans=ans*tmp%10;
           }
           tmp=tmp*tmp%10;//改变位数的地方用临时变量
           n>>=1;
       }
       printf("%lld\n",ans);
   }
    return 0;
}

时间: 2024-11-08 04:47:02

51nod 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

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 #inclu

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 源码 有点水

51Nod 1046 A^B Mod C(日常复习快速幂)

1046 A^B Mod C 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 给出3个正整数A B C,求A^B Mod C. 例如,3 5 8,3^5 Mod 8 = 3. Input 3个正整数A B C,中间用空格分隔.(1 <= A,B,C <= 10^9) Output 输出计算结果 Input示例 3 5 8 Output示例 3 题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!prob

51Nod 1004 n^n末尾数字 | 快速幂

#include "bits/stdc++.h" using namespace std; #define LL long long #define INF 0x3f3f3f3f3f #define PI acos(-1) #define N 510 #define MOD 10 LL quickPow(LL a,LL b) { LL ans=1; while(b>0){ if(b&1){ ans=ans*a%MOD; } b>>=1; a=a*a%MOD;

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] 其中,[ ]意思是或,从校内电话号码或校外电话号码中选择一个:{ }表示重复,两边的数字表示重复次数的下限和上限:=意思是定