CF1068A 题解
修改日志
:修改了分数格式。
思路
这题首先就先判断一下 是否大于 ,如果是,则输出 -1。
为什么呢?
因为每个人最少买一枚纪念币,且因为每个纪念币都必须是不同的,所以会买 种纪念币,而纪念币只有 种,因为 ,所以是不可能实现的。
考虑可能的最坏的情况,也就是所有人买的纪念币正好包含 Ivan 有的那 个纪念币,因为还有保证至少有 个是 Ivan 没有的,所以他们至少买 个纪念币。
也就是说,他们每个人得买 个纪念币。
设 。
最后再判断一下 是否小于等于 ,如果是,输出 ,否则,输出 -1。
代码
#include<bits/stdc++.h>
using namespace std;
long long n,m,k,l,p,ans;
int main(){
scanf("%lld%lld%lld%lld",&n,&m,&k,&l);
if(n<m) return !printf("-1");
p=k+l;
ans=p/m;
if(p%m!=0) ans++;
if(n/m<ans) return !printf("-1");
return !printf("%lld",ans);
}
有错或疑问欢迎私信指出~

浙公网安备 33010602011771号