【数论】计算s里有几个n,去除s里的n

简介: 【数论】计算s里有几个n,去除s里的n

题目


你身上有 aa 个 nn 元的硬币和 bb 个 11 元的硬币。请问能不能在不找零的情况下购买 ss 元的物品。


Input


第一行一个数 qq (1 \le q \le 10^41≤q≤104) —代表有 qq 组数据


测试案例的只有一行包含四个整数 aa, bb, nn 和 SS (1 \le a, b, n, S \le 10^91≤a,b,n,S≤109) — 价值nn的硬币数量,价值11的硬币数量,价值nn和所需的总价值


Output


For the ii-th test case print the answer on it — YES (without quotes) if there exist such xx and yy that if you take xx coins of value nn and yy coins of value 11, then the total value of taken coins will be SS, and NO otherwise.


You may print every letter in any case you want (so, for example, the strings yEs, yes, Yes and YES will all be recognized as positive answer).


Sample 1


image.png

一些话

t了一发,nnd


正篇

原因是题目考察的套路不熟悉,拆分下这道题

t组数据,while(t--) 注意每一组用到的数据要初始化

计算可以用几个n元来支付(就是这点了,套路不熟练只想到模拟)↓


1.前提条件:


               要计算s里有几个n


套路:


               int cnt = s / n;


2.前提条件:


               去除s里的n


套路:


               以上一个套路为基础


               s -= (cnt) * n;


               因为n的数量是有限制的,如果减多了就补回多的部分;


                       if(cnt > a)


                       s+= (cnt - a) * n;


               到这里这道题基本就搞定了,


下面是完整代码

#include <iostream>
using namespace std;
int main(){
    int t,a,b,n,s;
    cin >> t;
    while(t--){
        int cnt = 0;
        cin >> a>> b >> n >> s;
        cnt = s/n;
        s -= cnt * n;
        if(cnt > a){
            s += (cnt-a) * n;
        }
        if(s - b > 0) puts("NO");
        else puts("YES");
    }
    return 0;
}
目录
相关文章
|
SQL 关系型数据库 MySQL
mysql 简单的sql语句,入门级增删改查
介绍MySQL中的基本SQL语句,包括数据的增删改查操作,使用示例和简单的数据表进行演示。
mysql 简单的sql语句,入门级增删改查
|
Oracle 关系型数据库
Oracle expdp 导出数据遇到奇葩的快照过旧异常处理
expdp导库的时候,日志提示: ORA-31693: Table data object "YN01700_FRAME"."TAPAGEREVIEW" failed to load/unload and is being skipped due to error: ORA-02354: err.
3255 0
|
存储 网络安全 数据处理
阿里云对象存储OSS计费模式按量付费和包年包月选择攻略
阿里云OSS对象存储计费模式分为按量付费和包年包月,默认开通OSS就是按量付费,购买资源包抵扣OSS费用的方式属于包年包月计费模式
3666 0
阿里云对象存储OSS计费模式按量付费和包年包月选择攻略
|
机器学习/深度学习 算法 安全
从方向导数到梯度:深度学习中的关键数学概念详解
方向导数衡量函数在特定方向上的变化率,其值可通过梯度与方向向量的点积或构造辅助函数求得。梯度则是由偏导数组成的向量,指向函数值增长最快的方向,其模长等于最速上升方向上的方向导数。这两者的关系在多维函数分析中至关重要,广泛应用于优化算法等领域。
1236 36
从方向导数到梯度:深度学习中的关键数学概念详解
|
存储 Java 编译器
java wrapper是什么类
【10月更文挑战第16天】
452 3
|
运维 Kubernetes 监控
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器,只需要25分钟
今天分享JumpServer堡垒机,带领大家搭建以及使用JumpServer连接我们的后端server服务器。 这里安装的版本v2.22.2,采用的是离线部署JumpServer堡垒机,相应的还有一键部署、手动部署、kubernetes部署、源码部署等。更多信息请使用文章末尾链接查看。 <br> # 一、什么是堡垒机? 堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段监控和记录运维人员对网络内的服务器、网络设备、安全设备、数据库等设备的操作行为,以便集中报警、及时处理及审计定责。
1404 0
【JumpServer-初识篇】一键搭建JumpServer堡垒机、对接server服务器,只需要25分钟
|
存储 消息中间件 NoSQL
【Redis】细说Redis之zset底层数据结构
面试官:有了解过Redis中zset数据结构底层是怎样实现的吗?没有是吧,没关系,那感谢参加今天的面试哈。
1053 0
【Redis】细说Redis之zset底层数据结构
如何使用flask的 @app.before_request 装饰器
如何使用flask的 @app.before_request 装饰器
|
存储 Java 容器
Java内存溢出OOM使用Mat分析
Java内存溢出OOM使用Mat分析
423 0
Java内存溢出OOM使用Mat分析
|
Unix 编译器 Linux
Linux必知词汇:应用二进制接口(Application Binary Interface, ABI)
Linux必知词汇:应用二进制接口(Application Binary Interface, ABI)
2172 0

热门文章

最新文章