题目

https://vjudge.net/problem/51Nod-1166

思路

用更快的牛顿迭代法。把问题转化为求x^2 -n=0的根,假设解为x0,当前解为x 且 x^2 - n>0,在(x,x^2 - n)处作切线,与x轴交点横坐标为新的x,然后迭代即可,比二分法快

牛顿迭代法(Newton’s method)又称为牛顿-拉夫逊(拉弗森)方法(Newton-Raphson method),它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。公式为:(x+a/x)/2

这种方法可以很有效地求出根号a的近似值:例如,我想求根号2等于多少。使用牛顿迭代法后这个值很快就趋近于根号2了:
(4 + 2 / 4) / 2 = 2.25
(2.25 + 2 / 2.25) / 2 = 1.56944…
(1.56944… + 2/1.56944…) / 2 = 1.42189…
(1.42189… + 2/1.42189…) / 2 = 1.41423…

代码

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.math.BigInteger;
import java.util.StringTokenizer;public class Main {/*** @param args* @throws Exception*/public static void main(String[] args) throws Exception {String a = _07Reader.next();BigInteger N = new BigInteger(a);//下面的if语句不晓得干什么的,不带上会超时//如果输入的是偶数位的数,例如16if (N.toString().length() % 2 == 0) {//截取这两位数a = a.substring(0, N.toString().length()/2 + 1);}else {a = a.substring(0, (1+N.toString().length())/2);}BigInteger x = new BigInteger(a);BigInteger two = new BigInteger("2");//考虑输入是1的情况if (a == "1") {System.out.println(1);}else {//N - x^2 < 0的条件while (N.compareTo(x.multiply(x)) < 0) {//导入公式(x+a/x)/2x = x.add(N.divide(x)).divide(two);}System.out.println(x);}}}class _07Reader {static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));static StringTokenizer tokenizer = new StringTokenizer("");static String next() throws Exception {while (!tokenizer.hasMoreTokens()) {tokenizer = new StringTokenizer(br.readLine());}return tokenizer.nextToken();}static String nextLine() throws Exception {return br.readLine();}static int nextInt() throws Exception {return Integer.parseInt(next());}}

拓展

这个是求BigDecimal平方根的方法,遇到这样的题再说吧,先放着…
JAVA BigDecimal使用牛顿迭代法计算平方根

51Nod-1166大数开平方(java版本)相关推荐

  1. 下载最新版本Maven 3.3.9 ,检测安装是否成功时发现Java版本JDK却低于1.7时报错

    下线最新版本Maven 3.3.9 ,检测安装是否成功时发现Java版本JDK却低于1.7时报错 cmd: mvn -v Exception in thread "main" ja ...

  2. linux 修改java版本_Linux 有问必答:如何在 Linux 中改变默认的 Java 版本

    提问:当我尝试在Linux中运行一个Java程序时,我遇到了一个错误.看上去像程序编译所使用的Java版本与我本地的不同.我该如何在Linux上切换默认的Java版本? 当Java程序编译时,编译环境 ...

  3. java jnlp被阻止_JNLP应使用特定的Java版本,但会出现错误结果

    我在这里面临一个问题.我想使用特殊版本来运行我们的 java webstart应用程序,但只需要一个jnlp. ("经过测试,- blabla我们不能使用新版本- blabla"随 ...

  4. Ubuntu/Debian 系统切换Java(JVM),修改Java版本,JAVA_HOME

    http://blog.mypapit.net/2007/10/how-to-switch-between-different-java-jvm-in-ubuntu-and-debian-gnu-li ...

  5. mac os x java_Mac OS X和多个Java版本

    守着一只汪 在Mac上管理多个Java版本的最简洁方法是使用Homebrew.在内Homebrew,使用:homebrew-cask 安装java的版本jenv 管理已安装的java版本如http:/ ...

  6. centos 更换java版本_centos7 更换jdk版本

    查看java版本   java -version 如果有java版本(如果没有直接看红色虚线以下的) 输入 rpm -qa | grep java会显示以下几条内容: ******* ******** ...

  7. 【错误记录】Android 编译时技术版本警告 ( 注解处理器与主应用支持的 Java 版本不匹配 )

    文章目录 一.报错信息 二.问题分析 三.解决方案 一.报错信息 在使用 Android 编译时技术 , 涉及 编译时注解 , 注解处理器 ; 开发注解处理器后 , 编译报如下警告 ; 该警告不会影响 ...

  8. 【Android APT】注解处理器 ( 配置注解依赖、支持的注解类型、Java 版本支持 )

    文章目录 一.注解处理器 依赖 编译时注解 二.设置 注解处理器 支持的注解类型 三.设置 注解处理器 支持的 Java 版本 四.博客资源 Android APT 学习进阶路径 : 推荐按照顺序阅读 ...

  9. 【SmartJob】【隔离装置】WEB/统计程序和隔离程序共享服务器时的JAVA版本冲突问题

    SmartJob.DmsWeb与SmartSys共享服务器容易引发Java版本冲突问题: Java版本不正确 UnsupportedClassVersionError Exception in thr ...

最新文章

  1. 综述:目标检测二十年
  2. PAT甲级1093 Count PAT‘s :[C++题解]DP、状态机模型dp
  3. 从RocketMQ看长轮询(Long Polling)
  4. 硬核分析|腾讯云原生OS内存回收导致关键业务抖动问题
  5. Highcharts数据表示(3)
  6. CF1260C-Infinite Fence【结论题】
  7. postgreSQL计算总数sum if case when
  8. 怎么更改wifi频段_wifi信号差?网速慢?这样做不浪费每一兆宽带
  9. springboot酒店管理信息系统答辩PPT模板
  10. 接口访问次数_如何基于spring开发自定义注解实现对接口访问频次限制?
  11. TypeScript笔记(1)——环境配置与第一个ts程序
  12. ubuntu16.04下ROS操作系统学习笔记(八)机器人SLAM与 Gmapping-Hector_slam-Cartographer--ORB_SLAM
  13. 遇见,那一份最美的眷恋
  14. 与计算机相关的伟人,计算机发展史上最有影响的伟人
  15. 畅享9能改鸿蒙,华为畅享9 root教程_畅享9卡刷root包来获取root权限的方法
  16. c语言设置字体时调用对话框,第1课用C语言函数编写对话框之一直接实践
  17. 最新研究:朝九晚五可能会让你的身心受到巨大伤害!
  18. rtx2060为什么叫智商卡_二哈拆家,却把自己卡在了沙发里,智商确实令人捉急...
  19. kafka 安装和启动
  20. win 雨滴 linux,Win10插件

热门文章

  1. Android 关于App被杀死后,如何接收极光推送
  2. 我在香港的公司学到什么
  3. 高精度隧道施工人员定位安全管理解决方案
  4. Python简易环境部署安装之Windows 11
  5. 超详细解读带你读懂单细胞RNA测序分析的最佳实践教程 (原理、代码和评述)
  6. 服务器自动化程序,服务器端 UI 自动化提供程序的实现
  7. 安装vim,vim安装不了
  8. 高分子结晶的新进展、新模型
  9. 使IIS部署的网站应用HTTPS协议
  10. 改led背光有光斑_2020东莞最火改灯店,东莞奥迪A6L车灯老化改灯,奥迪改激光大灯...