AOJ : 0220 - Binary Digit A Doctor Loved

アルゴリズム

整数部の基数変換は, JavaのInteger.toString()を使えば一発なので, それを利用しました.
この変換後の文字列が, 9ケタ以上ならば, 必然的にNAです.
小数部の基数変換は, Javaのライブラリにもないため, 普通の計算の仕方で2進数に変換しました.
この変換途中で5ケタ以上になるようならば, これもNAです.
最後に整数部を8ケタになるように, 小数部を4ケタになるように, 0を連結させて, 出力しました.

プログラム

import java.util.*;

public class Main{
  public static void main(String[] args){
    Scanner sc = new Scanner(System.in);

    while(true){
      double x = sc.nextDouble();
      if(x == -1) break;

      int left = (int)x;
      String leftS = Integer.toString(left,2);

      if(leftS.length() > 8){
        System.out.println("NA");
        continue;
      }

      double right = x % 1;
      String rightS = "";
      int rem = 4;

      while(rem-- > 0 && right != 0){
        right *= 2;
        rightS += (int)right;
        right %= 1;
      }

      if(right != 0){
        System.out.println("NA");
        continue;
      }

      while(leftS.length() != 8) leftS = "0" + leftS;
      while(rightS.length() != 4) rightS += "0";

      System.out.println(leftS + "." + rightS);
    }
  }
}