ACM_求N^N的前5位数和后5位数(数论)
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位数(数论)的更多相关文章
- 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 ...
- ACM_求N^N的最高位数
Leftmost Digit Time Limit: 2000/1000ms (Java/Others) Problem Description: 给定一个正整数N,你应该输出N ^ N的最左边的数字 ...
- Uva 11029 Leading and Trailing (求n^k前3位和后3位)
题意:给你 n 和 k ,让你求 n^k 的前三位和后三位 思路:后三位很简单,直接快速幂就好,重点在于如何求前三位,注意前导0 资料:求n^k的前m位 博客连接地址 代码: #include < ...
- 给定一个正整数,实现一个方法求出离该整数最近的大于自身的 换位数 <把一个整数各个数位进行全排列>
"""给定一个正整数,实现一个方法求出离该整数最近的大于自身的 换位数 -> 把一个整数各个数位进行全排列""" # 使用 permu ...
- 用递归的方法求一个数组的前n项和
用递归的方法求一个数组的前n项和 public class Demo1 { /* * 用递归的方法求一个数组的前n项和 */ public static void main(String[] args ...
- E - Leading and Trailing 求n^k得前三位数字以及后三位数字,保证一定至少存在六位。
/** 题目:E - Leading and Trailing 链接:https://vjudge.net/contest/154246#problem/E 题意:求n^k得前三位数字以及后三位数字, ...
- 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 ...
- Leading and Trailing LightOJ - 1282 (取数的前三位和后三位)
题意: 求n的k次方的前三位 和 后三位 ...刚开始用 Java的大数写的...果然超时... 好吧 这题用快速幂取模求后三位 然后用一个技巧求前三位 ...orz... 任何一个数n均可以表示 ...
- 牛客小白月赛5-D-阶乘(求n内每个数的阶乘相乘后尾数为0的个数)
题目描述 输入描述: 输入数据共一行,一个正整数n,意义如“问题描述”. 输出描述: 输出一行描述答案:一个正整数k,表示S的末尾有k个0 输入例子: 10 输出例子: 7 --> 示例1 输入 ...
随机推荐
- java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.views.login_jsp
背景:SpringBoot的项目配置了对jsp的支持,走控制器就报这个错误.相关配置如下: <!-- JSP BEGIN --> <dependency> <groupI ...
- Partitioned Replacement for Cache Memory
In a particular embodiment, a circuit device includes a translation look-aside buffer (TLB) configur ...
- C#高级编程第9版 第一章 .NET体系结构 读后笔记
.NET的CLR把源代码编译为IL,然后又把IL编译为平台专用代码. IL总是即时编译的,这一点的理解上虽然明白.当用户操作C#开发的软件时,应该是操作已经编译好的程序.那么此时安装在客户机上的程序是 ...
- Codeforces Round #489 (Div. 2) B、C
B. Nastya Studies Informatics time limit per test 1 second memory limit per test 256 megabytes input ...
- 网页js粘贴截图
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- 07-js数组
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Java ThreadLocal 使用详解
ThreadLocal的官方API解释为: "该类提供了线程局部 (thread-local) 变量.这些变量不同于它们的普通对应物,因为访问某个变量(通过其 get 或 set 方法)的每 ...
- kvc VS kvo
Kvo是Cocoa的一个重要机制,它主要是用于对一个属性的新旧值的监控. 例如说依据A(数 据类)的某个属性值变化,B(view类)中的某个属性做出对应变化.对于MVC,kvo应用的地方很广泛. 使用 ...
- Canny算法源码,欢迎交流
http://blog.csdn.net/jianxiong8814/article/details/1563109 http://blog.csdn.net/assuper/article/deta ...
- socket listen backlog
http://stackoverflow.com/questions/4253454/question-about-listening-and-backlog-for-sockets The list ...