Leading and Trailing LightOJ - 1282 题解
LightOJ - 1282 Leading and Trailing 题解
纵有疾风起
题目大意
题意:给你一个数n,让你求这个数的k次方的前三位和最后三位。
\(2<=n<2^{31}\),\(1<=k<10^{7}\)
并且\(n^{k}\)至少有6位数
解题思路
这个题目需要解决两个问题
- 输出\(n^{k}\)的前三位
- 输出\(n^{k}\)的后三位
输出后三位
这个比较好解决,使用快速幂和模运算就能解决,这里不再详细介绍,看代码就行了。
输出前三位
这个比较麻烦,因为\(n^{k}\)会相当大,即使long long类型也不能存下来,那个我们就要想办法来降低这个结果的位数。
怎么办呢?使用对数来降低位数
\]
\]
这样\(k*lgn\)的整数部分提供位数,小数部分提供精度,我们需要去掉整数只保留小数部分。
需要注意的是就算\(10^{0.0001}>1\)(根据指数函数),即10的小数部分次幂也是大于零的,这样我们把这个结果载乘以100就是前三位了(因为小数点前面已经有1了)。
代码实现
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
int n,k;
int qpow(int n,int k) //快速幂模板
{
int ans=1,base=n%1000;
while(k)
{
if(k%2==1)
{
ans=(ans*base)%1000;
}
base=(base*base)%1000;
k/=2;
}
return ans;
}
int main()
{
int t;
scanf("%d",&t);
for(int i=1; i<=t; i++)
{
scanf("%d%d",&n,&k);
double a=(double)k*log10(n*1.0); //注意这个log函数的参数需要是浮点数,double类型
a-=(int)a; //去掉整数部分
double pre=pow(10.0,a); //求10的小数部分次幂
printf("Case %d: %d %03d\n",i ,(int)(pre*100),qpow(n, k)); //处理输出即可
}
}
END
Leading and Trailing LightOJ - 1282 题解的更多相关文章
- D - Leading and Trailing LightOJ - 1282
题解:求n^k的前三位和后三位. 后三位直接快速幂对1000去余就可以了.前三位可以转换成浮点数来操作,也是用快速幂,我们只保留答案的前三位,当前值大于1000.0的话就除以10,直到结果小于等于10 ...
- Leading and Trailing LightOJ - 1282 (取数的前三位和后三位)
题意: 求n的k次方的前三位 和 后三位 ...刚开始用 Java的大数写的...果然超时... 好吧 这题用快速幂取模求后三位 然后用一个技巧求前三位 ...orz... 任何一个数n均可以表示 ...
- lightoj 1282 && uva 11029
Leading and Trailing lightoj 链接:http://lightoj.com/volume_showproblem.php?problem=1282 uva 链接:http:/ ...
- LightOJ 1282 Leading and Trailing (快数幂 + 数学)
http://lightoj.com/volume_showproblem.php?problem=1282 Leading and Trailing Time Limit:2000MS Me ...
- UVA 11029 || Lightoj 1282 Leading and Trailing 数学
Leading and Trailing You are given two integers: n and k, your task is to find the most significant ...
- 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 ...
- Leading and Trailing(数论/n^k的前三位)题解
Leading and Trailing You are given two integers: n and k, your task is to find the most significant ...
- LightOJ1282 Leading and Trailing —— 指数转对数
题目链接:https://vjudge.net/problem/LightOJ-1282 1282 - Leading and Trailing PDF (English) Statistics ...
- 【LightOJ1282】Leading and Trailing(数论)
[LightOJ1282]Leading and Trailing(数论) 题面 Vjudge 给定两个数n,k 求n^k的前三位和最后三位 题解 这题..真的就是搞笑的 第二问,直接输出快速幂\(m ...
随机推荐
- ipsec概念理解
互联网安全协议(英语:Internet Protocol Security,缩写:IPsec): 本质上一个协议包,透过对IP协议的分组进行加密和认证来保护IP协议的网络传输协议族(一些相互关联的协议 ...
- django之logo日志的配置和使用
一:为什么使用日志 假如,在项目调试过程中,在某些地方加上了print()函数,输出了一些调试信息.在项目上线的时候,不要将调试信息暴露出去,但是调试信息还要用,该怎么办?项目测试运行在远端服务器上, ...
- django之表单类
一:表单类 一般我们在html中自己写的表单类似于下面的样子 <!DOCTYPE html> <html lang="en"> <head> & ...
- 货币系统 Money Systems
母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统.由于它们特殊的思考方式,它们对货币的数值感到好奇. 传统地,一个货币系统是由1,,, 或 ,, 和 100的单位面值组成的. 母牛想知道有 ...
- docker 安装MongoDB以及设置用户
MongoDB 是一个免费的开源跨平台面向文档的 NoSQL 数据库程序. 1.查看可用的 MongoDB 版本 访问 MongoDB 镜像库地址: https://hub.docker.com/_/ ...
- Linux用户和用户组指令
1.创建用户 >useradd username 创建用户 >passwd username 给用户设置密码 ======================================= ...
- [CSP-S模拟测试]:导弹袭击(数学+凸包+单调栈)
题目背景 $Guess$准备向敌军阵地发起进攻了!$Guess$的武器是自动制导导弹.然而在机房是不允许游戏的,所以班长$XZY$对游戏界面进行了降维打击,结果... 题目描述 众所周知,环境因素对导 ...
- [BZOJ4558]:[JLoi2016]方(容斥+模拟)
题目传送门 题目描述 上帝说,不要圆,要方,于是便有了这道题.由于我们应该方,而且最好能够尽量方,所以上帝派我们来找正方形上帝把我们派到了一个有N行M列的方格图上,图上一共有$(N+1)\times ...
- 模拟vue实现简单的webpack打包
一.安装nodejs,查看是否安装成功 二.package.json项目初始化 npm init 电脑有node环境,在根目录下运行命令npm init初始化项目,根据提示输入项目相关信息,然后运行. ...
- SpringMVC常用方法总结
*) @RequestMapping(value="/xxx/{id}",method={RequestMethod.GET}) method 不写的话,默认GET.POST都支持 ...