解题思路:
注意事项:
参考代码:
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语言程序设计教程(第三版)课后习题9.4 (C语言代码)浏览:760 |
C语言程序设计教程(第三版)课后习题3.7 (C++代码)浏览:1024 |
矩阵乘法 (C++代码)浏览:1662 |
回文串 (C语言代码)浏览:3095 |
C语言训练-大、小写问题 (C语言代码)浏览:649 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:368 |
1157题解浏览:769 |
1071题解浏览:585 |
C语言程序设计教程(第三版)课后习题10.2 (C语言代码)浏览:755 |
一元一次方程 (C语言代码)浏览:4245 |