题目大意:给出一个正整数n,你的人物是把1,2,...n的所有数变成0,每次操作可以从序列中选择一个或多个整数,同时减去一个相同的正整数,如果减去那个数后的数小于等于零的话,就当成零处理,问最少需要操作多少次
解题思路:每次都减去一个中位数的话,那么剩下来的数就只剩一半了
#include<cstdio>
int f(int n) {
return n == 1 ? 1:f(n/2) + 1;
}
int main() {
while(scanf("%d",&n) == 1 && n) {
printf("%d\n",f(n));
}
return 0;
}