题目描述

亿电竞的投资人“亿大佬”向你介绍游戏规则:你可以参与数次竞猜,每次竞猜都有两个待选队伍A和B(当然不是竞猜新生赛的队员哈),你可以投入一定的钱给其中一个队伍,如果你选择的队伍获得了比赛的胜利,那么你就会根据赔率获得相应的收益,但是如果你猜错了,亿大佬就会拿着你的钱去直播间刷火箭。 

当然,由于对阵的两个队伍的实力一般不会相同,所以赔率也不可能相同。假设下注弱的队伍且弱的队伍赢了,你下注的钱就会翻倍(变为原来的2倍),下注了强的队伍并且强的队伍赢了,你下注的钱只会增加1元(吃低保真没意思,但也比赔了好)。 

鸡尾酒看到宣传广告上写着“点一下,玩一年,投入只要一块钱”,于是就参加了本次活动。毕竟是“一元博天下”,所以鸡尾酒初始只投入了一元。鸡尾酒的竞猜宗旨是:“什么赔率分析,什么强队弱队,老夫玩竞猜就是一把梭!”所以不管鸡尾酒当前有多少钱,他每次都会全部下注。经过若干场竞猜之后,鸡尾酒战绩全胜,并且手里的钱变成了N元,你能算出鸡尾酒至少参与了几场竞猜吗? 

输入描述:

题目包含多组测试数据,请处理到文件结束。每组输入一行表示一个N(1<=N<=10^9),代表最终的钱数。

输出描述:

对于每个输入,输出一个数字代表从1元赚到N元需要的最少参与竞猜的次数。如果无论怎样都不可能从赚到N元,输出-1。每个输出数字占一行。
示例1

输入

2
3

输出

1
2

这题我一开始也没看。。感觉很麻烦
结果……尼玛啊 简单得要死好吗
那个-1的输出条件 我一开始就觉得奇怪 会有不可能的情况?大不了全都投强队 不信到不了目标钱数
看了答案……果然不用……
然后我自己写了一遍
#include<stdio.h>
#define ll long long
int main()
{
    int n,i,j;
    while(scanf("%d",&n)!=EOF)
    {
        int ans=0;
        while(n!=1)
        {
            if(n%2==0)
            {
                n=n/2;
            }
            else
            {
                n--;
            }                         //这边就是能log2的话就除2然后次数+1,不能的话就相当于投了强队,金钱-1
            ans++;
        }
        printf("%d\n",ans);
    }
}

真·又是一道外强中干的题呀……

posted on 2019-01-12 13:37  Lyrix  阅读(101)  评论(0编辑  收藏  举报