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(); } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。