简介:
给定正整数n,用最少的操作次数使得整个序列1,2,3,…,n都变成0
每次操作可以选择一个或多个整数,同时减去一个相同的正整数
分析:
手玩之后可以发现:每次都选择n/2的后半段删除最优
实际上答案就是n转化成二进制的位数
tip
手玩大法好,
猜结论保AC
//这里写代码片
#include<cstdio>
using namespace std;
int main()
{
int n;
while (scanf("%d",&n)!=EOF)
{
int ans=0;
while (n)
{
ans++;
n>>=1;
}
printf("%d
",ans);
}
return 0;
}