大数开方(Java版)
发布时间:2020-12-14 04:05:57 所属栏目:大数据 来源:网络整理
导读:题目:大数开方 ? Java代码: 适合被开方数不超过1000位的。 import java.util.*;import java.math.*;public class Main{ public static void main(String[] args) { Scanner cin=new Scanner(System.in); int t=cin.nextInt(); BigInteger remain=BigIntege
题目:大数开方 ? Java代码:适合被开方数不超过1000位的。 import java.util.*; import java.math.*; public class Main { public static void main(String[] args) { Scanner cin=new Scanner(System.in); int t=cin.nextInt(); BigInteger remain=BigInteger.ZERO; BigInteger odd=BigInteger.ZERO; BigInteger ans=BigInteger.ZERO; for(int i=0;i<t;i++) { String s=cin.next(); 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); if(i!=t-1) System.out.println(); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |