牛客寒假算法基础集训营6 A出题

链接:https://ac.nowcoder.com/acm/contest/332/A
来源:牛客网
 

题目描述

小B准备出模拟赛。
她把题目按难度分为四等,分值分别为6,7,8,9。
已知小B共出了m道题,共n分。
求小B最少出了多少道6分题。    

输入描述:

两个正整数n,m

输出描述:

一个数,表示答案。
若无解,输出"jgzjgzjgz"。

示例1

输入

复制

34 5

输出

复制

1

示例2

输入

复制

32 5

输出

复制

3

示例3

输入

复制

5 1

输出

复制

jgzjgzjgz

备注:

n,m≤1012

这次比赛最坑的就是,最像暴力的题反而不是暴力,最像推公式的题反而暴力可过……(。

本来就是求一个最小值->x的取值范围,不知道为什么我当时总往求解x上想……!真实zz

然后搬一下说的很明白的官方题解:

作者:kczno1
链接:https://ac.nowcoder.com/discuss/153349?type=101&order=1&pos=8&page=1
来源:牛客网
 

显然,有解的充要条件为 6m≤n≤9m 。

若有解:

设有 x(0≤x≤m)道6分题,则剩下的m-x题共n-6x分,

则剩下的题有解的充要条件为 7(m−x)≤n−6x≤9(m−x) ,

解得 7m−n≤x≤(9m−n)/3。

因此答案为max(0,7m-n)。

ac代码:

#include <iostream>
#define ll long long
using namespace  std;
int main()
{
	ll n,m;
	
	cin>>n>>m;//n分,m道题
	
	if(n<m*6||n>9*m){
		
		cout<<"jgzjgzjgz"<<endl;
		
	}else{
		
		cout<<max((ll)0,7*m-n)<<endl;
		
	}
	
	return 0;
}
发布了48 篇原创文章 · 获赞 1 · 访问量 4576

猜你喜欢

转载自blog.csdn.net/tsunagxy/article/details/86773071