解题思路:
注意事项:
参考代码:
import java.util.Scanner; public class T1731 { public static int f(int m,int n){ int ans = 0; int l1 = m,l2 = 2*l1; int k = 1; //l1节点所在层 while(!(l1<=n && n<l2)){ l1=l2; l2*=2; k++; } if((l1 + Math.pow(2, k-1)-1)<=n) ans = (int)Math.pow(2, k) - 1; else ans = (int)Math.pow(2, k-1) + n - l1; return ans; } public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNext()){ int m = in.nextInt(),n = in.nextInt(); if(m == 0 && n == 0) break; System.out.println(f(m,n)); } in.close(); } }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:563 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:494 |
C语言程序设计教程(第三版)课后习题11.5 (C语言代码)浏览:889 |
小明A+B (C语言代码)浏览:1247 |
字符串问题 (C语言代码)浏览:1503 |
字符串对比 (C语言代码)浏览:1398 |
剪刀石头布 (C语言代码)不知道怎么直接在scanf中用枚举变量浏览:1306 |
数组输出 (C语言代码)--此题的题目描述有问题浏览:1814 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:459 |
C语言训练-大、小写问题 (C语言代码)浏览:724 |