牛客323A-出题

题目

1
2
3
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

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

输入描述

1
两个正整数n,m

输出描述

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

示例1

输入

1
34 5

输出

1
1

示例2

输入

1
32 5

输出

1
3

示例3

输入

1
5 1

输出

1
jgzjgzjgz

备注

$n,m\leq10^{12}$

解析

显然,有解的充要条件为 $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)$。

参考:

https://ac.nowcoder.com/discuss/153349?type=101&order=1&pos=7&page=1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/*
提交时间:2019-02-06 00:09:06 语言:C++ 代码长度:335 运行时间: 7 ms 占用内存:604K
运行状态:答案正确
*/
#include<iostream>
using namespace std;

int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);

long long n,m;
cin >> n >> m;
long long ans = m*7-n;
if(ans < 0)
ans=0;
if(m*6 > n || n > 9*m)
cout << "jgzjgzjgz" << endl;
else
cout << ans << endl;
return 0;
}