题目:
思路:倍增思维;
我们先看最差的情况,把丧尸倍增到2^20的倍数,我们开20次AK-47即可,所以答案最多是20次。
然后我们可以枚举用武器1的次数,然后再看需要几次武器2,不断取min即可。
代码:
void solve(){
int n;cin>>n;
int ans=1000000000;
for(int i=0;i<22;i++)
{
int cur=n;
int c=0;
while(cur%2==0)
{
c++;
cur/=2;
}
ans=min(ans,i+max(0ll,20-c));
n++;
}
cout<<ans<<endl;
}