现在的位置: 首页 > 综合 > 正文

ACdream 1669 数一的偶像(JAVA大数开方)

2019年02月11日 ⁄ 综合 ⁄ 共 1073字 ⁄ 字号 评论关闭

题目是中文的很好懂,存个板子。

板子来自ACdreamers, 改动了一点用于a题。

import java.io.*;
import java.util.*;
import java.math.*;
 
public class Main
{
       public static void main(String[] args)
       {
               Scanner cin = new Scanner(new BufferedInputStream(System.in));
               while(cin.hasNext())
               {
                      String s = cin.next();
                      BigInteger n = new BigInteger(s);
                      BigInteger remain = BigInteger.ZERO;
                      BigInteger odd = BigInteger.ZERO;
                      BigInteger 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));
                      }
                      if(ans.multiply(ans).compareTo(n) < 0)
                          ans.add(BigInteger.ONE);
                      if(ans.remainder(BigInteger.valueOf(2)).compareTo(BigInteger.ONE) < 0)
                          System.out.println(0);
                      else
                          System.out.println(1);
              }
      }
}

抱歉!评论已关闭.