题目描述
现在有n个正整数1,2.3,……,n,每一次操作你可以任选一些数,把它们都减去同一个正整数现在询问把它们都变成0的最少步数是多少?
样例输入
16
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
样例输出
1 2 2 3 3 3 3 4 4 4 4 4 4 4 4 5
思路:我们观察样例,不难找出规律,因此可以编出如下程序
#include<bits/stdc++.h>
using namespace std;
int T;
long long n;
int main(){
freopen("number.in","r",stdin);
freopen("number.out","w",stdout);
cin>>T;
while(T--){
cin>>n;
int k=0;
for(int i=1;;i++){
if(pow(2,k)<=n&&pow(2,k+1)>n){
cout<<i<<" ";
break;
}
k++;
}
}
return 0;
}