zoukankan      html  css  js  c++  java
  • 51nod 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大整数套牛顿迭代法

    牛顿迭代法在计算方法这门课里学过,但是现在记忆已经有些模糊了


    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();
          }
    }






  • 相关阅读:
    Spring集成MyBatis
    UpdatePanel的简单用法(转)
    updatePanel导致JS失效的解决办法(转)
    sql面试题(学生表_课程表_成绩表_教师表)
    javascript深入理解js闭包
    T-SQL利用Case When Then多条件判断
    T-SQL排名函数
    DataTable字符串类型的数字,按照数字类型排序
    Sql 行转列问题总结
    行转列:SQL SERVER PIVOT与用法解释
  • 原文地址:https://www.cnblogs.com/bryce1010/p/9387279.html
Copyright © 2011-2022 走看看