#6618. 管理哪个区间(2)
管理哪个区间(2)
题目 2:编号的管辖范围
题目描述
某信息管理系统需要维护一组按顺序编号的数据,编号从 1 开始。
对于任意正整数 i,定义函数 (F(i)) 满足:
- (F(i)) 是
2的整数次幂; - (F(i)) 能够整除
i; - 在满足上述条件的所有整数中,(F(i)) 的值最大。
系统规定,编号 i 对应一个连续的管辖区间。该区间的右端点为 i,区间长度为 (F(i))。
设管辖区间为: [L,R]
则有:
并且区间中一共包含 (F(i)) 个整数。
给定正整数 i,请计算其对应管辖区间的左端点 L 和右端点 R。
输入格式
输入一个正整数:
i
输出格式
输出两个整数:
L R
表示编号 i 对应的管辖区间为:
[L,R]
数据范围
对于所有测试数据:
1 ≤ i ≤ 10^9
样例输入 1
20
样例输出 1
17 20
样例解释
对于:
i = 20
能够整除 20 的 2 的整数次幂有:
1,2,4
其中最大的数是:
4
因此:
编号 20 对应区间的右端点为 20,区间长度为 4。
从 20 开始向前一共取 4 个编号:
17,18,19,20
所以管辖区间为:
[17,20]
因此输出:
17 20
样例输入 2
16
样例输出 2
1 16
样例解释
因为:
所以:
区间右端点为 16,区间长度为 16,因此区间为:
[1,16]
思考提示
已知区间右端点为:
区间长度为:
一个包含 (F(i)) 个整数,并且右端点为 i 的连续区间,其左端点应该如何计算?
注意:
[17,20]
中包含的是:
17,18,19,20
一共有 4 个整数,而不是 3 个。
相关
在以下作业中: