NNNNN

Time Limit: 2000/1000ms (Java/Others)

Problem Description:

对于整数N,求N^N的前5位和后5位(1057题加强版)

Input:

多组测试数据,每组测试数据输入为一个整数n(6 <= n <= 10^9),n为0时结束。

Output:

对每组测试输出为两个整数a和b,由空格隔开,保留前后0,格式见样例。

Sample Input:

6
10
110
1001
0

Sample Output:

46656 46656
10000 00000
35743 00000
27196 01001
解题思路:①怎么求N^N的前5位数呢?我们有对一个数N,用科学计数法表示为N=a*10^m,此时a的整数部分即为N的最高位数字。假设b是最高位数字(0<b<10,b取整数),则a=b*10^4就是N^N的前五位数,所以N^N=b*10^m=a*10^(m-4),两边取对数得N*lg(N)=lg(b)+m=lg(a)+m-4;因为0<b<10(b取整数),所以0<=lg(b)<1为小数部分。令x=lg(b)+m=lg(a)+m-4(m为x的整数部分m=floor(x)),x=N*lg(N),则a=10^(x+4-m)=10^(x+4-(floor)x);这里用floor比较好,向下取整(而不是int,或者long long,这样可以避免溢出),即返回不大于x的最大整数。
pow(x,y)函数计算x的y次幂。②至于求后5位数就更简单了,快速幂取余即可。
AC代码:
 #include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int mod_pow(LL base,LL n,int mod){
LL res=;
while(n>){
if(n&)res=res*base%mod;
base=base*base%mod;
n>>=;
}
return res;
}
int main()
{
int n;
while(cin>>n && n){
printf("%0.0f %05d\n",pow(,n*log10(n)-floor(n*log10(n))+),mod_pow(n,n,));
}
return ;
}

ACM_求N^N的前5位数和后5位数(数论)的更多相关文章

  1. 1282 - Leading and Trailing 求n^k的前三位和后三位。

    1282 - Leading and Trailing You are given two integers: n and k, your task is to find the most signi ...

  2. ACM_求N^N的最高位数

    Leftmost Digit Time Limit: 2000/1000ms (Java/Others) Problem Description: 给定一个正整数N,你应该输出N ^ N的最左边的数字 ...

  3. Uva 11029 Leading and Trailing (求n^k前3位和后3位)

    题意:给你 n 和 k ,让你求 n^k 的前三位和后三位 思路:后三位很简单,直接快速幂就好,重点在于如何求前三位,注意前导0 资料:求n^k的前m位 博客连接地址 代码: #include < ...

  4. 给定一个正整数,实现一个方法求出离该整数最近的大于自身的 换位数 <把一个整数各个数位进行全排列>

    """给定一个正整数,实现一个方法求出离该整数最近的大于自身的 换位数 -> 把一个整数各个数位进行全排列""" # 使用 permu ...

  5. 用递归的方法求一个数组的前n项和

    用递归的方法求一个数组的前n项和 public class Demo1 { /* * 用递归的方法求一个数组的前n项和 */ public static void main(String[] args ...

  6. E - Leading and Trailing 求n^k得前三位数字以及后三位数字,保证一定至少存在六位。

    /** 题目:E - Leading and Trailing 链接:https://vjudge.net/contest/154246#problem/E 题意:求n^k得前三位数字以及后三位数字, ...

  7. Week08_day01 (Hive开窗函数 row_number()的使用 (求出所有薪水前两名的部门))

    数据准备: 7369,SMITH,CLERK,7902,1980-12-17,800,null,20 7499,ALLEN,SALESMAN,7698,1981-02-20,1600,300,30 7 ...

  8. Leading and Trailing LightOJ - 1282 (取数的前三位和后三位)

    题意: 求n的k次方的前三位 和 后三位 ...刚开始用 Java的大数写的...果然超时... 好吧  这题用快速幂取模求后三位  然后用一个技巧求前三位 ...orz... 任何一个数n均可以表示 ...

  9. 牛客小白月赛5-D-阶乘(求n内每个数的阶乘相乘后尾数为0的个数)

    题目描述 输入描述: 输入数据共一行,一个正整数n,意义如“问题描述”. 输出描述: 输出一行描述答案:一个正整数k,表示S的末尾有k个0 输入例子: 10 输出例子: 7 --> 示例1 输入 ...

随机推荐

  1. 51nod 1298 圆与三角形 (计算几何)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1298 求出圆心到三条线段的最短距离,然后判断是否有顶点在圆外,就把全部情 ...

  2. vue生成包报错error from UglifyJs

    mangle: { keep_fnames: true},

  3. codevs——1039 数的划分

    1039 数的划分 2001年NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Description 将整数 ...

  4. cache and database

    This article referenced from http://coolshell.cn/articles/17416.html We all know that high concurren ...

  5. 第三课 MongoDB 数据更新

    1.课程大纲 本课程主要解说 MongoDB 数据更新的相关内容.包含文档插入 insert 函数.文档删除 remove函数以及文档更新update函数的基本使用.除此之外.还会介绍 MongoDB ...

  6. Django学习系列之Form表单结合ajax

      Forms结合ajax Forms的验证流程: 定义用户输入规则的类,字段的值必须等于html中name属性的值(pwd= forms.CharField(required=True)=<i ...

  7. Ubuntu下Zabbix安装及使用问题

    1.configure: error: MySQL library not found MySQL library not found root@kallen:~# apt-get install l ...

  8. SQL Server 海量数据查询代码优化以及建议

    1.应尽量避免在  where  子句中对字段进行   null  值推断,否则将导致引擎放弃使用索引而进  行全表扫描,如:     select id from t where num is nu ...

  9. Hadoop之——HBASE结合MapReduce批量导入数据

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46463889 废话不多说.直接上代码,你懂得 package hbase; imp ...

  10. HDU 1269 迷宫城堡 最大强连通图题解

    寻找一个迷宫是否是仅仅有一个最大强连通图. 使用Tarjan算法去求解,经典算法.必需要学习好,要自己创造出来是十分困难的了. 參考资料:https://www.byvoid.com/blog/scc ...