首页 > 编程语言 >L1-7 分寝室 [java]

L1-7 分寝室 [java]

时间:2024-03-15 19:58:06浏览次数:31  
标签:女生 int 寝室 n1 L1 男生 java n3

分数 20

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

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

输入格式:

输入在一行中给出 3 个正整数 n0​、n1​、n,分别对应女生人数、男生人数、寝室数。数字间以空格分隔,均不超过 105。

输出格式:

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

输入样例 1:

24 60 10

输出样例 1:

4 6

注意:输出的方案对应女生都是 24/4=6 人间、男生都是 60/6=10 人间,人数差为 4。满足前三项要求的分配方案还有两种,即女生 6 间(都是 4 人间)、男生 4 间(都是 15 人间);或女生 8 间(都是 3 人间)、男生 2 间(都是 30 人间)。但因为人数差都大于 4 而不被采用。

输入样例 2:

29 30 10

输出样例 2:

No Solution

感谢浙江警官职业学院楼满芳老师斧正数据!

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n1 = sc.nextInt();
        int n2 = sc.nextInt();
        int n3 = sc.nextInt();
        int min = Integer.MAX_VALUE, flag = 0, nv = 0, nan = 0;

        for (int i = 1; i < n3; i++) {

            if (!(n1 % i == 0) || !(n2 % (n3 - i) == 0)) {
                continue;
            } else {
                int a = n1 / i;
                int b = n2 / (n3 - i);
                if(a==1||b==1){
                    continue;
                }
                int temp = Math.abs(b - a) ;
                if (temp < min) {
                    min = temp;
                    nv = i;
                    nan = n3 - i;
                    flag = 1;
                }
            }
        }
        if (flag == 0) {
            System.out.println("No Solution");
        } else {
            System.out.println(nv +" "+nan);
        }
    }
}

 

标签:女生,int,寝室,n1,L1,男生,java,n3
From: https://blog.csdn.net/weixin_61082895/article/details/136723475

相关文章

  • 什么是分库分表?用Java手写一个分库分表组件
    分库分表分库分表路由组件的主要功能是负责处理数据在多个数据库和表之间的分配和路由。在分库分表的场景中,数据会根据一定的策略(如业务逻辑、哈希算法等)被分散到不同的数据库或表中,以提高系统的并发处理能力和扩展性。具体来说,分库分表路由组件需要完成以下任务:数据源的......
  • Java学习第二天——基础语法
    Java基础语法数据类型强类型语言要求变量的使用要严格符合规定,所有变量都必须先定义后才能使用!!!Java的数据类型分类基本类型(primitivetype)1.数值类型整数类型浮点类型字符类型(只占有两个字节)2.boolean类型:占一位,其值为true或者false引用类型(referencetype)类、接......
  • Java基础知识篇02——Java基本语法
    一、数据类型定义:就是用了保存数据的一个类型,一种数据类型,只能保存该类型数据值作用:只有了解数据类型,才能选择合适的类型存放数据,才能更好的利用计算机硬件资源(内存和硬盘等)。不同的数据类型存放数据大小是不同的。数据类型的使用方式就是用来声明一个变量,装数据的。......
  • 程序人生——Java枚举和注解使用建议
    目录引出枚举和注解建议83:推荐使用枚举定义常量建议84:使用构造函数协助描述枚举项建议85:小心switch带来的空值异常建议86:在switch的default代码块中增加AssertionError错误建议87:使用valueOf前必须进行校验建议88:用枚举实现工厂方法模式更简洁建议89:枚举项的数量控制......
  • 程序人生——Java泛型和反射的使用建议
    目录引出泛型和反射建议93:Java的泛型是类型擦除的建议94:不能初始化泛型参数和数组建议95:强制声明泛型的实际类型建议96:不同的场景使用不同的泛型通配符建议97:警惕泛型是不能协变和逆变的建议98:建议采用的顺序是List,List,List建议99:严格限定泛型类型采用多重界限建议1......
  • Java访问者模式源码剖析及使用场景
    访问者模式一、介绍二、报表系统开发三、MyBatis中如何使用访问者模式?一、介绍Java中的访问者(Visitor)模式是一种行为型设计模式,它将数据结构与数据操作分离,使得在不修改数据结构的情况下可以增加新的操作。该模式主要包含以下几个角色:抽象访问者(Visitor):定......
  • java上传文件到FTP制定文件夹
    JAVA上传文件到FTP/***@ClassNameFTPLoad*@DescriptionTODO*@Authordell*@Date2024/3/1415:56*@Version1.0**/importcn.hutool.core.io.FileUtil;importcn.hutool.json.JSONObject;importcn.hutool.json.JSONUtil;importorg.apache.commons.net.......
  • javabean:VO和POJO的区别?
    实体类都是JavaBean的一种 实际上没区别 功能都一样 使用的时候区别(VO一般在命名结尾有大写VO 以做区别)参考:https://blog.csdn.net/huang_ftpjh/article/details/90232922关于java的几种对象(PO,VO,DAO,BO,POJO,DTO)解释摘抄参考2:https://blog.csdn.net/weixin_6938139......
  • idea开发java必备插件
    1.Lombok 这个大家都熟悉,通过注解的形式代替了很多生成式的代码,如Getter、Setter方法、ToString方法,构造函数等,使你的类更精简和美观,没有太多的冗余代码。2.Maven Helper,使用maven引入依赖的必备,分析和排除冲突依赖关系的简单方法,显示maven依赖树,查询引用的依赖关系以及跳转......
  • Java题目-数组计算-中位数- 圆类的构造-时间计算-学生类设计
    第一题:数组计算题目描述:编写Java程序,计算两个整型数组的和、差、乘积、商的整数部分及大小关系。定义如下:和:两个数组对应元素的和,若元素缺失,则补0;差:第一个数组和第二个数组对应元素的差,若元素缺失,则补0;乘积:两个数组对应元素的积,若元素缺失,则计0;除:第一个数组元素除以第二......