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. segv & mini coredump 调研

    1. mini coredump    a. segv      http://zh.scribd.com/doc/3726406/Crash-N-Burn-Writing-Linux-applica ...

  2. Codeforces Gym100495 B、D、E、F、K

    http://codeforces.com/gym/100495 K题 草地的面积减去相交的面积,计算几何,垃圾题,避免不必要的计算损失精度(能约分的约分) 卡了老子一个星期了 再加前几天的一道题 这 ...

  3. mysql性能调优——锁优化

    影响mysql server性能的相关因素 需求和架构及业务实现优化:55% Query语句优化:30% 数据库自身优化:15% 很多时候大家看到数据库应用系统中性能瓶颈出现在数据库方面,就希望通过数 ...

  4. JavaScript错误处理和堆栈追踪

    转自:https://github.com/dwqs/blog/issues/49 有时我们会忽略错误处理和堆栈追踪的一些细节, 但是这些细节对于写与测试或错误处理相关的库来说是非常有用的. 例如这周 ...

  5. 微信小程序 wafer2框架摘要

    微信小程序 wafer2框架摘要 帮助文档:https://github.com/tencentyun/wafer2-startup/wiki 使用了knex.js进行数据库交互,使用了koa.js进 ...

  6. HTML5: 本地缓存

    实现前端缓存,除了自己创建js保存(參考:http://blog.csdn.net/clementad/article/details/46807641).还能够利用html5的storage方法. ...

  7. 8.跟我学solr---UpdateRequestProcessor具体解释

    简单介绍 java web开发的同学应该非常熟悉,在开发中常常会使用filter来处理请求中的一些切面需求. solr也提供类似的一种链式结构的handler来满足在加入数据索引请求的时候.通过切片的 ...

  8. 利用SEH进行代码混淆

    这几天在重看SEH机制,收获颇丰. 随手写了一个用SEH进行跳转的代码贴于此处以作纪念. 当发生异常,并捕捉了异常.在OS的异常处理机制下.会进入异常过滤函数. 过滤函数能够返回EXCEPTION_E ...

  9. ExtAspNet从DataTable里导出Excel

    protected void btn_ToExcel_Click(object sender, EventArgs e) { Response.ClearContent(); Response.Add ...

  10. java图片处理工具之-ImageMagick+jmagick(二)

    简单的图片处理測试类: public class ImageUtil { static{           System.setProperty("jmagick.systemclassl ...