+1和*2

链接:https://ac.nowcoder.com/acm/contest/9680/H
来源:牛客网

从前有一个数字 1,它每天要么 +1,要么 *2
现在它变成了 n,请问它最少用了几天变成 n

输入描述:

题目包含多组测试数据,请处理到文件结束。每组输入一行表示一个 N(1≤N≤109)N(1 leq N leq 10^9)N(1N109),代表最终的钱数。保证测试数据的个数不超过 10510 ^ 5105。

输出描述;

对于每个输入,输出一行一个整数表示答案


这个题目是倒着考虑的,就是把n->1需要几步
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn=4e5+100;
ll a[maxn];
ll n;
int cnt=1;
int main(){
    while(cin>>n){
        int ans=0;
        while(n!=1){
            if(n&1){
                n--;
            }
            else{
                n/=2;
            }
            ans++;
        }
        cout<<ans<<endl;
    }
}
原文地址:https://www.cnblogs.com/lipu123/p/14095119.html