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 输入 ...
随机推荐
- 刺激(codevs 1958)
题目描述 Description saffah的一个朋友S酷爱滑雪,并且追求刺激(exitement,由于刺激过度导致拼写都缺了个字母),喜欢忽高忽低的感觉.现在S拿到了一张地图,试图制定一个最长路径 ...
- Thinkphp5.0 的使用模型Model删除数据
Thinkphp5.0 的使用模型Model删除数据 一.使用destory()删除数据 //删除id为3的记录 $res = User::destroy(3); //返回影响的行数 dump($re ...
- linux 常见名词及命令(四)
yum仓库的配置 yum仓库的配置文件存放在/etc/yum.repos.d/目录中. 第一步:切换到/etc/yum.repos.d/目录中. 第二步:使用vim编辑器打开一个名为'rhel7.re ...
- Linux下tmp文件夹的文件自动删除的问题(转)
场景: 近日发现有一台机器tmp文件夹下放置的文件无辜丢失,而且排查发现是自动丢失,并且,只是删除10天之前的文件. 本来以为是哪位写了一个自动执行脚本, find了一下10天前的文件删除了. 结果, ...
- 条款十六: 在operator=中对所有数据成员赋值
当涉及到继承时,派生类的赋值运算符也必须处理它的基类成员的赋值!否则,当派生类对象向另一个派生类对象赋值时,只有派生类部分赋值了.看看下面: class base { public: ): x(ini ...
- SaltStack学习系列之Nginx部署
目录结构 |-- nginx | |-- files #放包文件的 | | |-- admin_22.conf | | |-- fastcgi_params | | |-- jim_fix_param ...
- Telnet登入cisco router 1800
Login to Router and change to privileged modec:\>telnet 192.168.6.1Trying 192.168.6.1...Connected ...
- MyEclipse 8.5安装Aptana
Aptana简单介绍 Aptana是一个很强大,开源,专注于JavaScript的Ajax开发IDE它的特性包含: 1.JavaScript,JavaScript函数,HTML,CSS语言的Co ...
- Linux下C编程的学习_1
0x0:为什么写这个系列的文章 博客原本的定位是安卓游戏的破解,可是为什么写这系列的文章呢? 由于在破解过程中,我们是无法避免来敲代码的,恢复算法,模拟算法,游戏中对数据的解密.游戏中对保存在clie ...
- 【图像处理】基于OpenCV底层实现的图片旋转
image processing 系列 [图像处理]直方图匹配 [图像处理]高斯滤波.中值滤波.均值滤波 图片旋转,本质上是对旋转后的图片中每一个像素点计算在原图的位置.然后照搬过来就好. (多说一句 ...