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 }
原文:http://www.cnblogs.com/Tree-dream/p/7288962.html