51nod 1837 砝码称重 (规律)

网友投稿 593 2022-10-03

51nod 1837 砝码称重 (规律)

51nod 1837 砝码称重 (规律)

Description

小 Q 有 n 个砝码,它们的质量分别为 1 克、 2 克、……、 n 克。他给 i 克的砝码标上了编号 i (i = 1, 2, …, n),但是编号被人打乱了,即编号为 i 的砝码不一定是 i 克,而是 a_i 克,这里 a 指的是 1 到 n 的一个排列。他有一杆天平,可以向天平的两侧放任意数量的砝码,通过一次称量得到两侧质量的大小关系,关系只有左侧重、一样重、右侧重三种可能。他想知道,最坏情况下,他至少需要称量多少次,才能确定其中至少一个编号为 i 的砝码的质量是 i 克或不是 i 克。提示:这里所谓的最坏情况是指,对于固定的、按顺序进行的称量操作,不论每次称量的结果是什么,都能完成所需完成的上述判定任务。例如 n = 6 时,可以只称量一次,选择编号为 1、 2、 3 的砝码放在左侧,编号为 6 的砝码放在右侧。如果天平不是平的,则可以确定存在至少一个砝码 i 不是 i 克 (i = 1, 2, 3, 6),否则编号为 6 的砝码一定是 6 克。再例如 n = 5 时,可以只称量两次,第一次选择编号为 2、3 的砝码放在左侧,编号为 5 的砝码放在右侧,第二次选择编号为 1、4 的砝码放在左侧,编号为 5 的砝码放在右侧。这里略去这样称量的正确性,留给做题人推导和证明。

Input

输入包含多组测试数据。每行对应一组测试数据,包含一个正整数 n 。不超过 10^5 组数据,1 ≤ n ≤ 10^9。

Output

每行对应一组测试数据,输出一个正整数表示答案。

Input 示例

156

Output示例

021

思路

最坏情况就是每次称量的结果都和把 ai 当作 i 称量的结果相同,所以只用考虑在这种情况下要多少次称量才能称量出至少一定有一个 ai=i显然答案不会超过 3实际上答案最大是 2当 n 是三角形数时(即 n=k(k+1)2 ),只需一次,称量 1+2+⋯+k=n 是否成立,因为任选 k 个砝码能组成的最小质量和是 n当 n 是三角形数 +1 时(即 n=k(k+1)2+1 ),只需一次,称量 1+2+⋯+k

#include using namespace std;typedef long long LL;int main(){ LL n; while(cin>>n) { if(n==1) { cout<<0<

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:微信小程序如何从数据库加载数据(小程序怎么从数据库获取数据)
下一篇:如何从前端程序员的视角看小程序的稳定性保障(如何从前端程序员的视角看小程序的稳定性保障实现)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~