#ZS20243. 奇偶演变

奇偶演变

3. 奇偶演变(oddeven.cpp)

题目描述: 舟舟定义了一个奇偶变换规则,当一个数xx是偶数的时候,就变成x/2x/2,当一个数xx是奇数的时候, 就变成x1x-1。 利用这个规则,我们可以写下path(x) 表示从xx开始按照上述规则不断变化的一个序列。例 如,path(1)={1},path(15)={15,14,7,6,3,2,1}。path(32)={32,16,8,4,2,1}。

现在我们要求的是一个最大的y,使得y至少在k个path(x)中至少有一个。其中1xn1\le x\le n

例如:当n=11,k=3时,最大的y是5。因为5在path(5),path(10),path(11)中都出现了。 且没有更大的数出现3次。 又比如当n=11,k=6时,答案是4,分别在path(4),path(5),path(8),path(9), path(10),path(11)都出现了。

输入格式:

  • 一行,包含两个整数n和k。

输出格式:

  • 对于每组测试数据,输出一个整数,表示最大的满足条件的数y。

示例输入1:

11 3

示例输出1:

5

示例输入2:

11 6

示例输出2:

4

示例输入3:

20 20

示例输出3:

1

示例输入4:

1000000 100

示例输出4:

31248

数据范围约定 总计 10个测试点。

  • 对于40%的数据,保证1kn1031 \le k \le n \le 10^3
  • 对于80%的数据,保证1kn1051 \le k \le n \le 10^5
  • 对于100%的数据,保证1kn1071 \le k \le n \le 10^7