问题 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\n");
        else printf("NO\n");
    }
    return 0;
}

 

posted @ 2019-09-03 20:07  沅清的小窝  阅读(255)  评论(0编辑  收藏  举报