Problem 0220 : Binary Digit A Doctor Loved
問題概要
与えられた実数が、整数部8桁以下かつ小数部4桁以下の2進数で表されるならばそれを、
そうでなければNAを出力せよ。
解法
2進数は0詰めで表記されるので、実数の大きさにかかわらず12回ループを回して、2進数に変換してやればよい。
12回計算した後、余りがあればNA.
ソースコード
double d; int main() { while(scanf("%lf",&d),d>=0) { if(d>=256) { puts("NA"); continue; } rep(i,7)d/=2; int a[12]={0}; rep(i,12) { if(d>=1)a[i]=1,d-=1; d*=2; } if(d!=0)puts("NA"); else { rep(i,8)printf("%d",a[i]); putchar('.'); rep(i,4)printf("%d",a[i+8]); puts(""); } } return 0; }