这道题的测试用例答案有问题,是由整数除法的舍入误差造成的。
如果用二分法,每次都应该用浮点数。
例如: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); } }