zoukankan      html  css  js  c++  java
  • 赌神(逆向思维)

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

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 32768K,其他语言65536K
    64bit IO Format: %lld

    题目描述

    买定离手,买定离手!到底谁能捧杯本次新生赛?

    大家好,欢迎来到由“亿电竞”赞助的“一元搏天下”活动。

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

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

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

    输入描述:

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

    输出描述:

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

    示例1

    输入

    复制

    2
    3

    输出

    复制

    1
    2

    说明

    对于N=2的情况,
    
    竞猜成功一次强队赢或一次弱队赢,都能使1元变成2元。
    
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<iostream>
    
    using namespace std;
    
    int main()
    {
    	
    	long long int n;
    	int s=0;
    	while(scanf("%lld",&n)!=EOF)
    	{
    		while(n!=1)
    		{
    			if(n%2==1)
    			{
    				n--;
    				s++;
    				
    			}
    			else
    			{
    				n/=2;
    				s++;
    			}
    		}
    		cout<<s<<endl;
    	}
    	
    	return 0;
    }
    
    
    所以答案输出1。
    
    对于N=3的情况,
    
    可以竞猜两次强队赢,每次赚一元,就能使1元变成3元,并且没有办法通过一次竞猜就直接赚到3块,
    
    所以答案输出2。

    题解:逆向思维

    代码:

  • 相关阅读:
    IndexedDB demo showcase
    javascript for
    IndexedDB
    web sql Database
    webSql
    哈哈 代表月亮
    网易
    Android 百度地图 SDK v3.0.0 (一)
    iOS使用Instrument的Leaks查找代码内存泄露
    换主页轮播的主题图片(4、删除)---轻开电子商务系统(企业入门级B2C站点)
  • 原文地址:https://www.cnblogs.com/Staceyacm/p/10781872.html
Copyright © 2011-2022 走看看