国内最全IT社区平台 联系我们 | 收藏本站
华晨云阿里云优惠2
您当前位置:首页 > php开源 > php教程 > UVA - 10023 - Square root (模拟手算开方)

UVA - 10023 - Square root (模拟手算开方)

来源:程序员人生   发布时间:2015-08-19 07:41:48 阅读次数:3301次



题目传送: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))) == ⑴) { 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()); } } }









生活不易,码农辛苦
如果您觉得本网站对您的学习有所帮助,可以手机扫描二维码进行捐赠
程序员人生
------分隔线----------------------------
分享到:
------分隔线----------------------------
关闭
程序员人生