• 问题 B: 走向人生巅峰


    问题描述:

    正在上学的同学们一定很向往大学毕业进入职场,成为一名光荣的程序员,然后大秀自己的代码功力,得到老板的赏识、迎娶白富美、成为CEO、从此走上人生巅峰...咳咳,扯远了,但是小A同学就有着上述梦想,日有所思夜有所梦,终于小A同学梦到自己大学毕业成为了一名光荣的程序员,应聘进了一家知名公司去搬砖,搬砖就要有工资啊,在跟老板讨论薪资的时候,想到在书上看过的《国王赏不起的米》(没读过的同学不要怕,此页面底部有整篇文章,可以顺便读一下),计上心头,对老板说:不如这样,我第一天只要1块的工资,其后每天工资是前一个天的两倍,也就是前5天的工资分别是1、2、4、8、16块。老板一听,简直太划算啦,就这么愉快地决定了。而聪明的你一定知道,由于每天翻倍的原因,等到后面小A同学的工资是个恐怖的数字,但是前面一些天小A同学的工资是真的低啊,都不够吃饭,俗话说人是铁饭是钢,一顿不吃饿的慌,小A同学很可能没等到走上人生巅峰就已经饿的光荣牺牲,如果某天小A同学吃不起饭,那他就会光荣牺牲。
           现在设饭价是a元,而小A同学原本就有b元,请问小A同学能梦到他走上人生巅峰(就是没有牺牲)的那一刻么? 

    输入

    第一行一个数字t(0<t<=1000),代表测试数据的组数。其后有t组测试数据,每组两个数字a, b,分别代表饭价a和小A同学的初始资金b。测试数据保证a,b均在[1,100000]之间。

    输出

    如果小A同学可以梦到他走向人生巅峰的那天,请输出一个"YES",否则请输出一个"NO"。每个输出占一行。 

    样例输入 Copy

    2
    100 1
    2 100

    样例输出 Copy

    NO
    YES

    提示

    对于每一天,先发工资。
    解题思路:刚开始想要计算到第n天为止工资和饭钱分别有多少差值为多少,奈何计算能力不过关。随后想到可以用每天的余额是否大于0来代替,如果第二天天的工资大于等于第二天的饭价,那么就不用担心,如果小于就要计算加上余额是否够用。不得不说几个月不做题真的手生太多了,优秀的人太多,只能一直努力。
    代码附上:
    #include<stdio.h>
    int main()
    {
        int t;
        scanf("%d",&t);
        while(t--)
        {
            int flag=0;
            double a,b,s=1.0,r;
            scanf("%lf%lf",&a,&b);
            while(s<a)
            {
                r=b+s-a;
                b=r;
                s=s*2.0;
                if(b<0)
                {
                    flag=1;
                    break;
                }
            }
            if(flag==0) printf("YES
    ");
            else printf("NO
    ");
        }
        return 0;
    }
  • 相关阅读:
    JDBC-HikariCP
    11、JDBC-Druid
    JDBC-DBCP
    JDBC-C3P0
    第十七篇-使用RadioGroup实现单项选择
    第十六篇-使用CheckBox实现多项选择
    第一篇-ubuntu18.04访问共享文件夹
    第十五篇-EditText做简单的登录框
    第十四篇-ImageButton控制聚焦,单击,常态三种状态的显示背景
    第十三篇-通过Button设置文本背景颜色
  • 原文地址:https://www.cnblogs.com/yuanqingwen/p/11455274.html
Copyright © 2020-2023  润新知