51NOD_1166 大数开平方
来源:互联网 发布:少儿英语网络课程价格 编辑:程序博客网 时间:2024/05/05 20:48
1166_ 大数开平方
基准时间限制:4 秒 空间限制:131072 KB
分值: 320 难度:7级算法题
给出一个大整数N,求不大于N的平方根的最大整数。例如:N = 8,2 * 2 < 8,3 * 3 > 8,所以输出2。
Input
给出一个大数N(N的长度 <= 100000)。
Output
输出不大于Sqrt(n)的最大整数。
Input示例
9
Output示例
3
思路:JAVA大数套牛顿迭代
AC代码:
import java.math.BigInteger;import java.math.*;import java.math.BigInteger;import java.util.Scanner;import java.util.*; public class Main{ public static void bigSqrt(){ Scanner cin=new Scanner(System.in); String s=cin.next(); BigInteger remain=BigInteger.ZERO; BigInteger odd=BigInteger.ZERO; BigInteger ans=BigInteger.ZERO;// remain=BigInteger.ZERO;// odd=BigInteger.ZERO;// ans=BigInteger.ZERO; int group=0,k=0; if(s.length()%2==1) { group=s.charAt(0)-'0'; k=-1; } else { group=(s.charAt(0)-'0')*10+s.charAt(1)-'0'; k=0; } for(int j=0;j<(s.length()+1)/2;j++) { if(j!=0) group=(s.charAt(j*2+k)-'0')*10+s.charAt(j*2+k+1)-'0'; odd=BigInteger.valueOf(20).multiply(ans).add(BigInteger.ONE); remain=BigInteger.valueOf(100).multiply(remain).add(BigInteger.valueOf(group)); int count=0; while(remain.compareTo(odd)>=0) { count++; remain=remain.subtract(odd); odd=odd.add(BigInteger.valueOf(2)); } ans=ans.multiply(BigInteger.TEN).add(BigInteger.valueOf(count)); } System.out.println(ans); cin.close(); return; } public static void main(String[] args) { Scanner cin=new Scanner(System.in); //int t=cin.nextInt(); bigSqrt(); cin.close(); }}
0 0
- 51NOD_1166 大数开平方
- 51nod 1166 大数开平方
- 51Nod-1166-大数开平方
- 高精度模板(含大数开平方)
- [牛顿法 || 二分] BZOJ 1213 [HNOI2004]高精度开根 & 51Nod 1166 大数开平方
- 牛顿迭代法对大数进行开平方操作(java版)
- Acdream 1669 数一的偶像(大数开平方)
- SQL 开平方
- 整数开平方
- 支点(开平方实践)
- SQL 开平方
- 开平方算法
- 开平方算法
- 求开平方
- 迭代法开平方
- java高精度开平方
- 如何开平方
- 开平方算法
- 双色球问题的数组实现
- osc 如何使用groovy 语言获取当前登录用户的用户角色(oracle sales cloud)
- Android开发---设置桌面图标不显示
- Android中图片的三级缓存
- 为普通用户添加root权限
- 51NOD_1166 大数开平方
- java web开发过程中,中文乱码问题
- 【转载】NAT穿透的详细讲解及分析
- Java表达式的陷阱——输入法、注释字符和转义字符的陷阱
- 手机号码正则表达式
- Linux 防火墙开启关闭
- 把指定的文件复制到目标文件夹下
- Oracle 删除用户和表空间的常用操作
- poj 2536 Gopher II 二分匹配应用 匈牙利算法