田径赛跑中,有8条跑道,从键盘输入一个整数n(n>8)作为参加比赛的选手人数,安排分组要求人数差距最少,依次打印输出每组安排的选手人数。
package com;
import java.util.Scanner;
public class Test2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.println("请输入人数...");
int a = in.nextInt();
int n = a/8;
int t = a%8;
System.out.println(t+"--------"+n);
if(t==0){
for(int i= 1;i<=8;i++){
System.out.println("第"+i+"条跑道有"+n+"人");
}
}
if(t>0){
for(int i= 1;i<=t;i++){
System.out.println("第"+i+"条跑道有"+((n*8)+1)+"人");
}
for(int i= t+1;i<=8;i++){
System.out.println("第"+i+"条跑道有"+((n*8))+"人");
}
}
}
}
先确定需要多少组
int zushu = (n+7)/8;
差数最少,那就是1.所以先确定组的最少人数。然后在确定有多少组需要加1人。
int zuishaorenshu = n / zushu;
int jia1zushu = n % zushu;
然后循环输出每组人数。
for (int i = 0; i < zushu; i++) {
if (i >= jia1zushu) {
System.out.println(zuishaorenshu);
} else {
System.out.println(zuishaorenshu + 1);
}
}
这样就行了吧。
Java code
public static void main(String[] args) throws DocumentException { Scanner in = new Scanner(System.in); System.out.println("请输入人数..."); int num = in.nextInt(); boolean m = false; int groups = num % 8 == 0 ? num / 8 : num / 8 + 1; System.out.println("共分为" + groups + "组"); while (groups >= 1) { System.out.println("第"+groups+"组人数:" + num / groups); num = num - num / groups; groups--; } }
结果:
请输入人数...
14
共分为2组
第2组人数:7
第1组人数:7
请输入人数...
46
共分为6组
第6组人数:7
第5组人数:7
第4组人数:8
第3组人数:8
第2组人数:8
第1组人数:8
请输入人数...
98
共分为13组
第13组人数:7
第12组人数:7
第11组人数:7
第10组人数:7
第9组人数:7
第8组人数:7
第7组人数:8
第6组人数:8
第5组人数:8
第4组人数:8
第3组人数:8
第2组人数:8
第1组人数:8
Scanner in = new Scanner(System.in); System.out.println("请输入人数..."); int x = in.nextInt(); int i = 8; int m = x/8; int mod = x%8; int count = 0; int group = 0; if (mod == 0) { group = m; count = i; } else { group = m+1; count = x/(group); } if (x%(group) != 0) { int a = 0; for (int j = 0; j < x%(group); j++) { System.out.println("第" + (++a) + "组共" + (count + 1) + "人"); } for (int j = 0; j < (group)-(x%(group)); j++) { System.out.println("第" + (++a) + "组共" + count + "人"); } } el
se { for (int j = 0; j < m+1 ; j++) { System.out.println("第" + j + "组共" + count + "人"); } }
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/* 田径赛跑中,有8条跑道,从键盘输入一个整数n(n>8)
作为参加比赛的选手人数,安排分组要求人数差距最少,依次打印输出每组安排的选手人数。 */
public class Test2{
public static void main(String [] args){
System.out.println("请输入参赛人数:\n");
try {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String getinput=br.readLine();
int inpu=Integer.valueOf(getinput);
int ever=inpu/8; //每组
int sy=inpu%8; //剩余
int a[]=new int[8];
for(int i=0;i
a[i]+=1;
}
for(int i=0;i<8;i++){
a[i]+=ever;
System.out.println("第"+(i+1)+"组人数是:"+a[i]+"\n");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
int n=0;
Scanner sc=new Scanner(System.in);
while(sc.hasNextInt()){
n=sc.nextInt();
int avg=n/8;
int other=n%8;
int[]a=new int[8];
for(int i=0;i<8;i++){
a[i]=avg;
}
for(int i=0;i
}
for(int i=0;i<8;i++)
System.out.println("第"+i+"个跑道人数"+a[i]);
}
}