CF203A Two Problems


题目传送门

思路:

按要求模拟就行了,但需要注意 $x=0$ 且 $a$ 或 $b$ 在枚举的过程中出现负数的情况。

代码:

#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){
	int x,t,a,b,da,db;
	cin>>x>>t>>a>>b>>da>>db;//输入。
	if(x==0){//特判。
		puts("YES");
		return 0;
	}else{
		for(int i=0;i<=min(a/da,t-1);i++){
			for(int j=0;j<=min(b/db,t-1);j++){//枚举考试时间(可以自己想一下为什么循环条件要求最小值,答案放在最后面)。
				if(a-da*i==x||b-db*j==x||(a-da*i)+(b-db*j)==x){//判断是否当时的分数刚好为x值。
					puts("YES");//是。
					return 0;//结束程序。
				}
			}
		}
	}
	puts("NO");//没有结果。
	return 0;//结束程序。
}

思考题答案:
本来这个循环就是来枚举时间的,但是最后一分钟时,如果 $a$ 或者 $b$ 的分数降到了 $0$ 或以下时,就不满足题目要求了。


文章作者: alex_liu
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 alex_liu !
  目录