出题(2019牛客寒假算法基础集训营 Day6-A)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011815404/article/details/88381955

【题目描述】

小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

思路:

设 6、7、8、9 分数的题的个数分别为 x、y、p、q,那么问题就变成了对于方程组 \left\{\begin{matrix}6x+7y+8p+9q=n \\ x+y+p+q=m \end{matrix}\right. 求解 x 使其最小

解得 x=7m-n+p+2q,可以发现,当 p、q 为 0 时,x 最小

【源代码】

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#define PI acos(-1.0)
#define E 1e-9
#define INF 0x3f3f3f3f
#define LL long long
const int MOD=1E9+7;
const int N=5000000+5;
const int dx[]= {-1,1,0,0};
const int dy[]= {0,0,-1,1};
using namespace std;

int main(){
    LL n,m;
    scanf("%lld%lld",&n,&m);
    
    if(6*m>n||9*m<n)
        printf("jgzjgzjgz\n");
    else if(7*m-n>0)
        printf("%lld\n",7*m-n);
    else
        printf("0\n");

    return 0;
}

猜你喜欢

转载自blog.csdn.net/u011815404/article/details/88381955
今日推荐