【天梯赛】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;
}

相关文章
|
C++
【PTA】​L1-006 连续因子​(C++)
【PTA】​L1-006 连续因子​(C++)
790 0
【PTA】​L1-006 连续因子​(C++)
|
8月前
|
缓存 算法 程序员
C++STL底层原理:探秘标准模板库的内部机制
🌟蒋星熠Jaxonic带你深入STL底层:从容器内存管理到红黑树、哈希表,剖析迭代器、算法与分配器核心机制,揭秘C++标准库的高效设计哲学与性能优化实践。
C++STL底层原理:探秘标准模板库的内部机制
|
10月前
|
机器学习/深度学习 人工智能 运维
什么是ai智能?AI的九年飞跃史:从AlphaGo到Agent智能体
2025年,AI已深入生活与产业,从“大模型”到“智能体”,技术实现跃迁。智能体具备记忆、工具调用、任务规划与反馈能力,推动AI从“问答”走向“执行”。推理成本下降使AI平民化,落地场景集中在流程自动化与认知决策。但幻觉、责任归属与长程任务仍是挑战。未来将向多模态、端侧计算与联邦智能体发展。
612 0
|
存储 人工智能 C++
【PTA】L1-064 估值一亿的AI核心代码(详C++)
【PTA】L1-064 估值一亿的AI核心代码(详C++)
800 1
|
数据安全/隐私保护
思科模拟器Cisco Packet Tracer 8.2.1注册、下载和安装教程(正确+详细)
本文详细总结了思科模拟器Cisco Packet Tracer 8.2.1注册、下载和安装教程(正确+详细),看这一篇就够啦~
55881 7
思科模拟器Cisco Packet Tracer 8.2.1注册、下载和安装教程(正确+详细)
|
C++
【天梯赛】L2-045 堆宝塔
最后 A 柱上剩下的宝塔作为一件成品,B 柱上剩下的彩虹圈被逐一取下,堆成另一座宝塔。堆宝塔游戏是让小朋友根据抓到的彩虹圈的直径大小,按照从大到小的顺序堆起宝塔。但彩虹圈不一定是按照直径的大小顺序抓到的。第二行按照宝宝抓取的顺序给出 N 个不超过 100 的正整数,对应每个彩虹圈的直径。//定义一个栈,T可以为int,float,double,char,string......在一行中输出宝宝堆出的宝塔个数,和最高的宝塔的层数。//检查栈是否为空,如果为空返回true,否则返回false。
428 8
|
存储 C++
【PTA】L1-043 阅览室(C++)
【PTA】L1-043 阅览室(C++)
322 1
|
C++
【PTA】L1-046 整除光棍(C++)
【PTA】L1-046 整除光棍(C++)
451 1
|
C++
【PTA】​L1-078 吉老师的回归​(C++)
【PTA】​L1-078 吉老师的回归​(C++)
392 0
【PTA】​L1-078 吉老师的回归​(C++)
|
存储 C++ 索引
【PTA】L1-059 敲笨钟(C++)
【PTA】L1-059 敲笨钟(C++)
309 1

热门文章

最新文章