晓华所在的工作组正在编写一套高精度科学计算的软件,一些简单的部分如高精度加减法、乘除法早已写完了,现在就剩下晓华所负责的部分:实数的高精度开m次根。因为一个有理数开根之后可能得到一个无理数,所以这项工作是有较大难度的。现在要做的只是这项工作的第一步:只对自然数进行开整数次根,求出它的一个非负根,并且不考虑结果的小数部分,只要求把结果截断取整即可。程序需要根据给定的输入,包括需要开根的次数,以及被开根的整数;计算出它的非负根取整后的结果。

Input

共有两行,每行都有一个整数,并且输入中没有多余的空格:第一行有一个正整数m (1 <= m <= 50),表示要开的根次;第二行有一个整数n (0<=n <= 10^10000),表示被开根的数。

Output

只有一行,包括一个数,即为开根取整后的结果。

Sample Input

3
1000000000

Sample Output

1000
import java.util.*;
import java.io.*;
import java.math.*;
public class Main
{
public static BigInteger check(BigInteger n,BigInteger x)
{
BigInteger ans=BigInteger.valueOf(1);
BigInteger a=BigInteger.valueOf(1);
for(BigInteger i=BigInteger.ZERO;i.compareTo(n)<0;i=i.add(a))
{
ans=ans.multiply(x);
}
return ans;
}
public static void main(String[] args)
{
Scanner cin=new Scanner(System.in);
BigInteger n=cin.nextBigInteger();
BigInteger m=cin.nextBigInteger();
BigInteger l=BigInteger.ZERO;
BigInteger a=BigInteger.valueOf(2);
BigInteger b=BigInteger.valueOf(1);
BigInteger r=BigInteger.valueOf(1);
BigInteger mid=BigInteger.ZERO;
while(check(n,r).compareTo(m)<=0)
{
l=r;
r=r.multiply(a);
}
while(l.compareTo(r)<=0)
{
mid=l.add(r).divide(a);
if(check(n,mid).compareTo(m)<=0) l=mid.add(b);
else r=mid.subtract(b);
}
System.out.println(r.toString());
}
}

BZOJ 高精度开根 JAVA代码的更多相关文章

  1. BZOJ 1213: [HNOI2004]高精度开根

    二次联通门 : BZOJ 1213: [HNOI2004]高精度开根 正解 NTT+高精+倍增+二分 但是可以用python 2333333 m,n=int(raw_input()),int(raw_ ...

  2. 【BZOJ1213】高精度开根

    python是坠吼的! 原题: 不贴原题,就是高精度开根,结果向下取整 首先二分答案,高精度嘛……python即可 二分右端点设为n会T掉,需要先倍增一个r,while(r **m <= n) ...

  3. 洛谷 - P2293 - 高精度开根 - 高精度

    https://www.luogu.org/problemnew/show/P2293 要求求出给定高精度整数的非负根取整的结果. 还有神仙用Python的浮点pow运算骗到不少分的. 唉! 那么我们 ...

  4. [HNOI2004]高精度开根

    题目:洛谷P2293.BZOJ1213. 题目大意:给你$n,k(n\leq 10^{10000},k\leq 50)$,求$\lfloor \sqrt[k]{n}\rfloor$. 解题思路:高精度 ...

  5. Yroot of High-Precisions (luogu P2293 [HNOI2004]高精度开根)

    Background\text{Background}Background I've accepted\text{I've accepted}I've accepteda very good prob ...

  6. android开发之java代码中字符串对比忽略大小写。java程序员必回,可用来比对验证码等问题

    比如:字符串a与字符串B对比,只需调用 a.equalsIgnoreCase(B);即可.很简单的一个方法.忽略大小写.

  7. Android开发之java代码工具类。判断当前网络是否连接并请求下载图片

    package cc.jiusan.www.utils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; ...

  8. Android开发之java代码中获取当前系统的时间工具类

    /** * 获取当前时间 * * @return */ public String getTime() { Date date = new Date();// 创建一个时间对象,获取到当前的时间 Si ...

  9. android开发之java代码中如何获取到当前时间。详情代码带注释。

    /** *获取当前时间 * @return */ public String getTime(){ Date date= new Date();//创建一个时间对象,获取到当前的时间 SimpleDa ...

随机推荐

  1. 用@property (copy) NSMutableArray *array;会有什么问题?

    我们县回忆一下copy属性的作用,一个属性标记了copy,当你调用他的setter方法,他会建立一个索引计数为1的对象,然后释放旧对象. @property (copy) NSMutableArray ...

  2. 在Ubuntu上创建一个可以启动的U盘

    1.概观 使用可启动的Ubuntu USB盘,您可以: 安装或升级Ubuntu 在不触及PC配置的情况下测试Ubuntu桌面体验 在借来的机器或网吧上启动到Ubuntu 使用USB盘上默认安装的工具来 ...

  3. AlexNet (ImageNet模型)

    介绍 AlexNet是LeNet的一种更深更宽的版本.首次在CNN中应用ReLU.Dropout和LRN,GPU进行运算加速. 一共有13层,有8个需要训练参数的层(不包括池化层和LRN层),前5层是 ...

  4. Linux中常用命令(文件)

    1.cat 显示出文件的全部内容 (1)格式:cat 文件名 -n 显示行号 (2)特点:一次性显示所有文件内容 2.tac 从最后一行倒着显示文件全部内容 3.more 全屏方式分页显示文件内容 回 ...

  5. web——前后端通信原理

    前端向后台传输数据: 传输方法:post  get 区别: (1)get:用于从服务器获取数据,将参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看 ...

  6. LINUX设备驱动程序笔记(一)设备驱动程序简单介绍

    <一>:设备驱动程序的作用 从一个角度看,设备驱动程序的作用在于提供机制,而不是策略. 在编写驱动程序时,程序猿应该特别注意以下这个基本概念:编写訪问硬件的内核代码时,不要给用户强加不论什 ...

  7. json数据转化成实体 存到数据库.

    直接看步骤吧 1.一般我们会调用别人给的webservice获取一个字符串数据.如果为String data="xxxxxxxxxx";  这个data事实上就是样例Enterpr ...

  8. 优化时序之补全if else

    时序优化中重要的一项就是提高模块的最高工作频率,工作频率由关键路径决定,通常的提高工作频率的步骤是:利用时序分析工具找到关键路径,分析关键路径主要延迟是布线延迟还是逻辑延迟,然后轮番十八般武器,如果是 ...

  9. quartz 持久化 数据库表

    此处只包括配置数据库操作 quartz 持久化数据库表格字段解释建表,SQL语句在dbTables文件夹中可以找到,介绍下我们开发主要使用到的表: (版本不一样,可能数据库表也不一样,这里使用2.2. ...

  10. 一张图了解javaJwt

    1.什么是javaJwt? JSON Web Tokens are an open, industry standard RFC 7519 method for representing claims ...