【天梯赛】L1-095 分寝室

简介: 输出的方案对应女生都是 24/4=6 人间、男生都是 60/6=10 人间,人数差为 4。满足前三项要求的分配方案还有两种,即女生 6 间(都是 4 人间)、男生 4 间(都是 15 人间);同时,每间女寝人数必须都一样,每间男寝人数必须都一样,也就是女生总人数对女寝数取模为0,男生总人数对男寝数取模为0。输入在一行中给出 3 个正整数 n0​、n1​、n,分别对应女生人数、男生人数、寝室数。按题意模拟,因为知道总寝室数为n,所以可以从1~n-1暴力枚举女寝 i 的数量,那么男寝的数量则为 c-i。

1. 题目描述

学校新建了宿舍楼,共有 n 间寝室。等待分配的学生中,有女生 n0​ 位、男生 n1​ 位。所有待分配的学生都必须分到一间寝室。所有的寝室都要分出去,最后不能有寝室留空。
现请你写程序完成寝室的自动分配。分配规则如下:

男女生不能混住;
不允许单人住一间寝室;
对每种性别的学生,每间寝室入住的人数都必须相同;例如不能出现一部分寝室住 2 位女生,一部分寝室住 3 位女生的情况。但女生寝室都是 2 人一间,男生寝室都是 3 人一间,则是允许的;
在有多种分配方案满足前面三项要求的情况下,要求两种性别每间寝室入住的人数差最小。输入格式:

输出格式:
在一行中顺序输出女生和男生被分配的寝室数量,其间以 1 个空格分隔。行首尾不得有多余空格。
如果有解,题目保证解是唯一的。如果无解,则在一行中输出 No Solution。

输入样例 1:

24 60 10

输出样例 1:

4 6

输入样例 2:

29 30 10

输出样例 2:

No Solution

2. 思路分析

按题意模拟,因为知道总寝室数为n,所以可以从1~n-1暴力枚举女寝 i 的数量,那么男寝的数量则为 c-i。

要注意题目给出的条件,不允许单人住一间,也就是说每一间寝室的人数必须>1。同时,每间女寝人数必须都一样,每间男寝人数必须都一样,也就是女生总人数对女寝数取模为0,男生总人数对男寝数取模为0。

为了让两种性别每间寝室入住的人数差最小,这里我采用了“打擂台”的做法,先定义一个比较大的数字mi(这里我让mi=100000,也可以更大),然后 每当男女每间寝室入住的人数差的绝对值(因为不知道是每间男寝人多还是每间女寝人多)比 mi小,就更新mi。同时记录此时的男寝数和女寝数。

3. 代码实现

#define _CRT_SECURE_NO_WARNINGS 1
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define endl '\n'

int main() {
   
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int a,b,c; cin>>a>>b>>c;
    int mi=100000,x=0,y=0;
    for(int i=1;i<c;i++){
   
        int t1=a%i,t2=b%(c-i);
        int s1=a/i,s2=b/(c-i);
        if(a%i==0&&b%(c-i)==0&&a/i>1&&b/(c-i)>1){
   
            if(abs(s1-s2)<mi){
   
                x=i,y=c-i;
                mi=min(mi,abs(a/i-b/(c-i)));
            }
        }
    }
    if(mi==100000) cout<<"No Solution"<<endl;
    else cout<<x<<" "<<y<<endl;
    return 0;
}

相关文章
【2022天梯赛】L1-8 静静的推荐
【2022天梯赛】L1-8 静静的推荐
|
2月前
|
人工智能 C++
第十四届省赛大学B组(C/C++)接龙数列
第十四届省赛大学B组(C/C++)接龙数列
|
5月前
|
存储
【天梯赛】L2-042 老板的作息表
新浪微博上有人发了某老板的作息时间表,表示其每天 4:30 就起床了。但立刻有眼尖的网友问:这时间表不完整啊,早上九点到下午一点干啥了? 本题就请你编写程序,检查任意一张时间表,找出其中没写出来的时间段。
38 5
【2022天梯赛】L1-7 机工士姆斯塔迪奥
【2022天梯赛】L1-7 机工士姆斯塔迪奥
L1-079 天梯赛的善良 (20 分)
L1-079 天梯赛的善良 (20 分)
217 0
|
安全
L3-009 长城 (30 分)(数学知识)
L3-009 长城 (30 分)(数学知识)
225 0
L3-009 长城 (30 分)(数学知识)
单片机比赛准备06-蓝桥杯-第四届初赛模拟题(自动售水机)
单片机比赛准备06-蓝桥杯-第四届初赛模拟题(自动售水机)
148 0
单片机比赛准备06-蓝桥杯-第四届初赛模拟题(自动售水机)
7-7 天梯赛的善良 (20 分)
7-7 天梯赛的善良 (20 分)
283 0