SGU111 Very simple problem(大数开方)
2011-10-12 20:58
411 查看
题意是,给出一个大整数(范围 10^1000),求2次方不大于该数的最大数
开始用的是C的高精度加上笔算开方,但是一整天都没出结果,我类个去啊……
无奈找了个 java 的代码,先出出气……
思想很简单,从1~10^500,区间二分求平方然后跟目标数比较。
第一次写(抄)java……
原题链接:http://acm.sgu.ru/problem.php?contest=0&problem=111
代码:
开始用的是C的高精度加上笔算开方,但是一整天都没出结果,我类个去啊……
无奈找了个 java 的代码,先出出气……
思想很简单,从1~10^500,区间二分求平方然后跟目标数比较。
第一次写(抄)java……
原题链接:http://acm.sgu.ru/problem.php?contest=0&problem=111
代码:
import java.io.*; import java.math.*; import java.util.*; public class Solution { public static void main(String[] args) { BigInteger r = new BigInteger("10"); BigInteger l = new BigInteger("1"); BigInteger one = new BigInteger("1"); int tmp,cmp; BigInteger x,mid,ans; r = r.pow(500); Scanner cin = new Scanner(new BufferedInputStream(System.in)); x = cin.nextBigInteger(); ans = new BigInteger("-1"); cmp = l.compareTo(r); while(cmp<=0){ mid = (l.add(r)).shiftRight(1); tmp = (mid.pow(2)).compareTo(x); if(tmp<=0){ ans=mid; l=mid.add(one); } else r=mid.subtract(one); cmp = l.compareTo(r); } System.out.println(ans); } }
相关文章推荐
- Very simple problem - SGU 111(大数开方)
- sgu 111 Very simple problem 高精开平方
- SGU 111 Very simple problem
- SGU 111 Very simple problem
- SGU 111 Very simple problem(高精度+二分)
- SGU 111 Very simple problem(高精度)
- SGU 111 Very simple problem
- SGU111 Very simple problem
- SGU 111 Very simple problem 翻译 题解
- SGU 111 Very simple problem
- SGU111 Very simple problem
- 111. Very simple problem
- 数学/手开平方/sgu111 Very simple problem
- SGU111 大数开方 Evolution
- 111. Very simple problem
- HUST 1563 - A Very Simple Problem
- I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum o
- poj 2535 Very Simple Problem
- 【HDU 3483】 A Very Simple Problem (二项式展开+矩阵加速)
- sgu-111-111. Very simple problem(java大数)