hihocoder 1311

http://hihocoder.com/problemset/problem/1311

这个题目模拟一下即可

我们都知道,小数转换2进制的办法就是对于小数部分不断乘2然后每一位取整数部分

那么这个题目也就是转换成,它是否可以通过乘以2,取整最后变成全都是0

用c的话,模拟一下乘法便可,所以这个用java要稍微方便些,用bigdecimal

 1 import java.math.BigDecimal;
 2 import java.util.Scanner;
 3 
 4 public class Main{
 5     public static void main(String[] args) {
 6         Scanner cin = new Scanner(System.in); 
 7         BigDecimal a,b;
 8         int cnt;
 9         cnt = cin.nextInt();
10         while((cnt--)>0){
11             String ans ="0.";
12             a = cin.nextBigDecimal();
13             boolean flag = true;
14             for(int i = 0;i<200;i++){
15                 a = a.multiply(BigDecimal.valueOf(2));
16                 if(a.compareTo(BigDecimal.ONE)>=0){
17                     a=a.subtract(BigDecimal.ONE);
18                     ans+="1";
19                 }else 
20                     ans+="0";
21                 if(a.compareTo(BigDecimal.ZERO)==0)
22                     break;
23                 //System.out.println(a);
24                 if(i==199)
25                     flag = false;
26             }
27             if(flag)
28                 System.out.println(ans);
29             else 
30                 System.out.println("NO");
31                 
32         }
33     }
34 }
原文地址:https://www.cnblogs.com/Tree-dream/p/7288962.html