首页 > 代码库 > hihocoder 1311

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 }

 

hihocoder 1311