码迷,mamicode.com
首页 > 其他好文 > 详细

题解【CF1256A Payment Without Change】

时间:2019-11-05 13:54:24      阅读:86      评论:0      收藏:0      [点我收藏+]

标签:注意   出现   情况   space   else   payment   F12   change   class   

OI生涯打的第一场CF比赛,写篇题解纪念一下吧

------------
可以想到先尽量用面值为1的硬币来凑,然后再用面值为n的硬币来补足。先算出用上所有面值为1的硬币还差多少钱,然后判断用面值为n的硬币够不够补足就可以了。计算需要面值为n的硬币的数量的时候,注意是否需要加1的判断。还有一个需要注意的点,有可能用面值为1的硬币就够了,即$b>=s$,有可能会出现没有特判这个情况导致 Wrong answer on test 2 的情况。

#include<iostream>
#include<cstdio>
#define ll long long
using namespace std;
ll t,a,b,n,s;
int main()
{
    cin>>t;
    while(t--)
    {
        cin>>a>>b>>n>>s;
        if(((s-b)%n==0 && a>=(s-b)/n)||((s-b)%n!=0 && a>=(s-b)/n+1 && ((s-b)/n+1)*n<=s)|| b>=s)//分别判断能整除,不能整除和直接凑够的情况
            puts("YES");
        else
            puts("NO");
    }
    return 0;
}

题解【CF1256A Payment Without Change】

标签:注意   出现   情况   space   else   payment   F12   change   class   

原文地址:https://www.cnblogs.com/TEoS/p/11797694.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!