洛谷 - P2293 - 高精度开根 - 高精度
https://www.luogu.org/problemnew/show/P2293
要求求出给定高精度整数的非负根取整的结果。
还有神仙用Python的浮点pow运算骗到不少分的。
唉!
那么我们使用保险的语言:Java,需要怎么做呢?
高精度数是10的10000次方,他的根应该在10的100次方附近?(题目没说是平方根啊,乱搞!)
我们先读入一个String,数出String有多少位,在这个位数的左右至多4位范围进行二分答案。
自己瞎搞了很久,不是T就是M的,还以为是语言的劣势。
其实是自己的二分的范围过大了。(至少限制一下r,当k比较大的时候r是很小的,k比较大的时候大数的乘方运算开销大,节省的时间就多很多了)
像神仙那样先用logn缩小范围就挺好内存80MB,速度是2.5秒。
由于跑得飞快,实际上还可以加入cnt-gc大法。设置cnt模100,内存降至40MB,速度是4秒。
但是Python只需要0.5秒和4MB哦!据说是因为Python的底层是用C语言实现的!(但是不限制二分范围也只是比Java多过一个点)
(还好大部分icpc应该对每种语言是公平的)
import java.util.*;
import java.math.*; public class Main {
static int k;
static BigInteger n;
public static void main(String args[]) {
Scanner sc=new Scanner(System.in); k=sc.nextInt();
n=sc.nextBigInteger(); if(k==1) {
System.out.println(n);
return;
} BigInteger l=BigInteger.ZERO,r=BigInteger.ONE;
while(r.pow(k).compareTo(n)<=0) {
l=r;
r=r.shiftLeft(1);
} BigInteger m=null; while(l.add(BigInteger.ONE).compareTo(r)<0) {
m=(l.add(r)).shiftRight(1);
int res=m.pow(k).compareTo(n);
if(res<=0) {
l=m;
}
else {
r=m;
}
//System.gc();
} if(l.pow(k).compareTo(n)<=0)
System.out.println(l);
else
System.out.println(r);
sc.close();
} }
洛谷 - P2293 - 高精度开根 - 高精度的更多相关文章
- [HNOI2004]高精度开根
题目:洛谷P2293.BZOJ1213. 题目大意:给你$n,k(n\leq 10^{10000},k\leq 50)$,求$\lfloor \sqrt[k]{n}\rfloor$. 解题思路:高精度 ...
- 【BZOJ1213】高精度开根
python是坠吼的! 原题: 不贴原题,就是高精度开根,结果向下取整 首先二分答案,高精度嘛……python即可 二分右端点设为n会T掉,需要先倍增一个r,while(r **m <= n) ...
- BZOJ 1213: [HNOI2004]高精度开根
二次联通门 : BZOJ 1213: [HNOI2004]高精度开根 正解 NTT+高精+倍增+二分 但是可以用python 2333333 m,n=int(raw_input()),int(raw_ ...
- BZOJ 高精度开根 JAVA代码
晓华所在的工作组正在编写一套高精度科学计算的软件,一些简单的部分如高精度加减法.乘除法早已写完了,现在就剩下晓华所负责的部分:实数的高精度开m次根.因为一个有理数开根之后可能得到一个无理数,所以这项工 ...
- Yroot of High-Precisions (luogu P2293 [HNOI2004]高精度开根)
Background\text{Background}Background I've accepted\text{I've accepted}I've accepteda very good prob ...
- 洛谷P2293 高精开根
锣鼓2293 写完了放代码 应该没什么思维难度 ———————————————————————————————————————————————————————— python真香 m=input() ...
- 洛谷 P2152 [SDOI2009]SuperGCD (高精度)
这道题直接写了我两个多小时-- 主要是写高精度的时候还存在着一些小毛病,调了很久 在输入这一块卡了很久. 然后注意这里用while的形式写,不然会炸 最后即使我已经是用的万进制了,但是交上去还是有两个 ...
- 【洛谷】P1009 阶乘之和——高精度算法
题目描述 用高精度计算出S = 1! + 2! + 3! + - + n! ( n ≤ 50 ) S = 1! + 2! + 3! + - + n! ( n ≤ 50 ) 其中"!&qu ...
- 洛谷P1781——宇宙总统(高精度排序)
题目描述 地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竟选总统,现在票数已经统计完毕,请你算出谁能够当上总统. 输入输出格式 输入格式: 第一行为一个整数n,代表竞选 ...
随机推荐
- Visual Studio VS2013模块对于SAFESEH 映像是不安全的 怎么办
打开该项目的"属性页"对话框,会出现如下界面打开该项目的"属性页"对话框,会出现如下界面 然后单击"链接器"--"命令行&qu ...
- vue - 前置工作
vue 中文官网:https://cn.vuejs.org/ vue ES6语法:https://www.cnblogs.com/zhouyangla/p/7225335.html vue Debug ...
- Flex4_操作XML
一.创建XML类 1.把字符串对象转换为XML: var xmlStr:String="<students><student><name>吕布</n ...
- FastDFS的配置、部署与API使用解读(1)Get Started with FastDFS(转)
转载请注明来自:诗商·柳惊鸿CSDN博客,原文链接:FastDFS的配置.部署与API使用解读(1)入门使用教程 1.背景 FastDFS是一款开源的.分布式文件系统(Distributed File ...
- 李洪强iOS开发之- 点击屏幕遮挡键盘
李洪强iOS开发之- 点击屏幕遮挡键盘 实现的效果: 01 - 给当前的view添加点击事件,使点击屏幕的时候,让键盘退出 /** * 点击屏幕 隐藏键盘 * * @param tap */-(vo ...
- wxpython中控件对键盘输入无响应的可能原因
问题描述: 开发环境:Win7 32bit + Python2.7.6 + WxPython 3.0.1-b20140707 开发某初级CAD软件中,需要实现点击TreeCtrl控件的相应选择,实现G ...
- Gym - 101164C - Castle KMP
题目链接:传送门 题解: 利用KMP的fail失配数组,快速找到当前后缀与前缀的公共前缀点 #include<bits/stdc++.h> using namespace std; #pr ...
- C++11 std::function、std::bind和lambda表达式
参考博客: C++可调用对象详解-https://www.cnblogs.com/Philip-Tell-Truth/p/5814213.html 一.关于std::function与std::bin ...
- Velocity模板引擎笔记
模板引擎中判断对象是否为空: #if(!${jsonObj.data.buyerName} || ${jsonObj.data.buyerName} == '') <p>采 ...
- 汉字与区位码互转(天天使用Delphi的String存储的是内码,Windows记事本存储的文件也是内码),几个常见汉字的各种编码,utf8与unicode的编码在线查询,附有读书笔记 good
汉=BABA(内码)=-A0A0=2626(区位码)字=D7D6(内码)=-A0A0=5554(区位码) 各种编码查询表:http://bm.kdd.cc/ 汉(记住它,以后碰到内存里的数值,就会有敏 ...