背景 Background | |||
怪盗基德 VS OIBH 第三话 | |||
描述 Description | |||
怪盗基德第三次来到熟悉的OIBH总部。屡屡失败的OIBH这次看守的是The Eye of Moon。还是那个 房间,还是那扇门,不同的是OIBH对密码锁进行了改进。这次屏幕上只显示一个数n(基德:这是 改进了还是退化了?)。 密码生成方法:设集合A中A={1,2,...,n},B为A子集。对于B中任意一个元素x,2x均不在集合B中。 B中元素数目最大值即为密码。 | |||
输入格式 Input Format | |||
一行,一个整数n(1<=n<=maxlongint) | |||
|
|
| |
| 输出格式 Output Format |
| |
| 只有一个整数m,表示B中元素最大值 |
这个题目乍一看差点被整晕了,但是自己思考还是比较简单的问题,这题目可以借助数轴进行理解:
首先题目可以理解为:
集合A即为数轴AD,现在研究集合B,首先对折数轴得到CD满足条件,依次向下研究AC ,去掉BC,可以得到AB,再向下研究AB,依次下去可以得到
#include <stdio.h>
int cal(int n)
{
if(n <= 0)
return 0;
else
return (n+1)/2+cal(n/4);
}
int main()
{
int n;
scanf("%d",&n);
printf("%d\n",cal(n));
return 0;
}