Square root (模拟手算开方)

题目传送:UVA – 10023

思路:模拟手算开方,,不想用c/c++,感觉太麻烦了,就直接用的java里的BigInteger类来写的,写了好久……Java还是得看看书呀,手算开方参考的这里

AC代码:

import java.util.Scanner;import java.math.BigInteger;public class Main {static void fun(BigInteger x) {String str;str = x.toString();str = "0" + str;int len = str.length();int i = len % 2;BigInteger ans = new BigInteger("0");BigInteger cur = new BigInteger("0");for(; i < len; i += 2) {cur = cur.multiply(BigInteger.valueOf(100)).add(new BigInteger(str.substring(i, i+2)));for(int j = 0; j < 10; j ++) {if(cur.compareTo(BigInteger.valueOf(20).multiply(ans).add(BigInteger.valueOf(j+1)).multiply(BigInteger.valueOf(j+1))) == -1) {cur = cur.subtract(BigInteger.valueOf(20).multiply(ans).add(BigInteger.valueOf(j)).multiply(BigInteger.valueOf(j)));ans = ans.multiply(BigInteger.valueOf(10)).add(BigInteger.valueOf(j));break;}}}System.out.println(ans);}public static void main(String args[]) {int T;Scanner cin = new Scanner(System.in);T = cin.nextInt();for(int i = 0; i < T; i ++) {if(i != 0) System.out.println();fun(cin.nextBigInteger());}}}

分之百的把自己推销给自己。

Square root (模拟手算开方)

相关文章:

你感兴趣的文章:

标签云: