题解CF1256A Payment Without Change

Posted teos

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题解CF1256A Payment Without Change相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

错误代码:88000, 错误信息:without comment privilege hint: [7oJ0533w689] rid: 630432cd-15944cf6-083e04fc

LeetCode题解 || Longest Substring Without Repeating Characters (O(n)算法)问题

CF1512D Corrupted Array 题解

题解CF519E

题解-比赛CF1332

CF398B题解