这道题的测试用例答案有问题,是由整数除法的舍入误差造成的。
如果用二分法,每次都应该用浮点数。
例如:5°的答案应该是100001,而不是100010
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double n = sc.nextDouble();
n += 90; //把区间[-90, 90]映射到[0, 180]
n *= 64.0/180; //把区间[0, 180]映射到[0, 64]
int N = (int)Math.floor(n); //把答案向下取整
String r = Integer.toBinaryString(N);//把答案化成二进制
while(r.length() < 6) r = "0" + r;//用0补齐位数
System.out.println(r);
}
}
京公网安备 11010502036488号