NC54593. 充Q币
描述
输入描述
输入的第一项只包含一个整数 -测试样例的数量。接下来T组测试样例。
接下来T行,每一行四个整数 ――面值为x硬币的数量,面值为1的硬币数量,数量为a的硬币面值大小,以及需要充值的Q币数量。
输出描述
如果zzf可以准确的充值n个Q币请输出"YES",否则请输出"NO";
示例1
输入:
4 1 2 3 4 1 2 3 6 5 2 6 27 3 3 5 18
输出:
YES NO NO YES
说明:
对于第一组测试样例, zzf可以选择1个面值为3的硬币和1个面值为1的硬币,来充值4个Q币。C++ 解法, 执行用时: 47ms, 内存消耗: 632K, 提交时间: 2021-10-28 16:12:34
#include<iostream> #include<cstring> using namespace std; int main(){ int t;cin>>t; int a,b,n,s; while(t--){ cin>>a>>b>>n>>s; int cnt=s-min(s/n,a)*n; if(b>=cnt)cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }
C++(g++ 7.5.0) 解法, 执行用时: 44ms, 内存消耗: 556K, 提交时间: 2023-03-29 15:37:17
#include<iostream> using namespace std; int main() { int t; cin >> t; while (t--) { int long long a, b, n, S; cin >> a >> b >> n >> S; int long long g= min(S / n , a); if (g * n + b >= S)cout << "YES" << endl; else cout << "NO" << endl; } }
C 解法, 执行用时: 8ms, 内存消耗: 388K, 提交时间: 2021-10-28 20:30:08
#include<stdio.h> int main(){ int t;int a,b,n,s; scanf("%d",&t); while(t--){ scanf("%d%d%d%d",&a,&b,&n,&s); s-=(s/n<a?s/n:a)*n; if(s<=b)printf("YES\n"); else printf("NO\n"); } return 0; }