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);
这个很简单吧,先算出平均每组多少人. 例如有: int n = 30; // 平均多少人 int avg = n / 8; // 多余的人,即余数 int left = n % 8; 余数就从第一组开始加1就行了。
下面是我的代码。 由于着急。 还有几个数字没法分组 例如 22、26、33、 你理解下代码然后自己添加下情况就ok了 import java.util.Scanner; public class a { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //22、26 Scanner in = new Scanner(System.in); System.out.println("请输入人数..."); int num = in.nextInt(); boolean m =false; for (int j = 8; j >= 4; j--) { Sel(num,j,m);
} }
public static void Sel(int num,int j, boolean m){ int group = num/j; int bl= num%j; if((bl==0 || bl==j-1)&& m==false){ System.out.println("分为"+group+"组"); for (int i = 0; i <= group; i++) { if (i<group) { System.out.println("第" + (i + 1) + "组,有"+j+"人"); }else if(bl!=0){ System.out.println("第" + (i + 1) + "组,有"+(j-1)+"人"); } } if(bl==0){ System.exit(0); } } } }
啊呀呀,怎么都写得那么复杂啊???几个for循环就搞定了!
先确定需要多少组 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); } } 这样就行了吧。
我的: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
上面的boolean m = false;这句是没有用的,前面直接复制了zj84604741的,没有删掉 呵呵~~
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 + "人"); } } else { 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<sy;i++){ sy--; 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<other;i++){ a[i]=a[i]+1; } for(int i=0;i<8;i++) System.out.println("第"+i+"个跑道人数"+a[i]); }
}
Scanner in = new Scanner(System.in); System.out.println("请输入人数..."); int x = in.nextInt(); int i = 8; int m = x/8; int n= x%8; int a=1; for(;n>0;n--) { System.out.println("第" + (a++) + "组共" + (m+1)+ "人"); }
刚才写错了 有点东西 没考虑到 现在改了下 Scanner in = new Scanner(System.in); System.out.println("请输入人数..."); int x = in.nextInt(); int i = 8; int m = x/8; int n= x%8; int a=1; for(;a<=8;a++,(n+1)--) { if(n>0) { System.out.println("第" + a + "组共" + (m+1)+ "人"); } else System.out.println("第" + a + "组共" + m + "人"); }
public class testgroup { public static void main(String a[]){
Scanner sc=new Scanner(System.in); int read=sc.nextInt();
int countGroup=read/8+1; int buffer=0; for(int i=countGroup;i>=1;i--){ buffer=read/i; read=read-buffer; System.out.println("第"+(countGroup-i+1)+"组有"+buffer+"人"); } }}
import java.util.Arrays;public class Test { static final int COUNT = 8;
public static void main(String[] args) { fun(26); } static void fun(int n){ int group = n % 8 == 0 ? n / 8 : n / 8 + 1;//获取组数 int[] array = new int[group]; int avg = n / group;//获取每组最少人数 int m = n - group * avg;//获取剩下的人数m for(int i = 0;i < array.length;i++){ if(i < m) array[i] = avg + 1;//将剩下的人数平均分到前m组 else array[i] = avg; } System.out.println(Arrays.toString(array)); } }
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 n = 30;
// 平均多少人
int avg = n / 8;
// 多余的人,即余数
int left = n % 8;
余数就从第一组开始加1就行了。
import java.util.Scanner;
public class a { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//22、26
Scanner in = new Scanner(System.in);
System.out.println("请输入人数...");
int num = in.nextInt();
boolean m =false;
for (int j = 8; j >= 4; j--) {
Sel(num,j,m);
}
}
public static void Sel(int num,int j, boolean m){
int group = num/j;
int bl= num%j;
if((bl==0 || bl==j-1)&& m==false){
System.out.println("分为"+group+"组");
for (int i = 0; i <= group; i++) {
if (i<group) {
System.out.println("第" + (i + 1) + "组,有"+j+"人");
}else if(bl!=0){
System.out.println("第" + (i + 1) + "组,有"+(j-1)+"人");
}
}
if(bl==0){
System.exit(0);
}
}
}
}
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);
}
}
这样就行了吧。
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 + "人");
}
} else {
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<sy;i++){
sy--;
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();
}
}
}
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<other;i++){
a[i]=a[i]+1;
}
for(int i=0;i<8;i++)
System.out.println("第"+i+"个跑道人数"+a[i]);
}
}
System.out.println("请输入人数...");
int x = in.nextInt();
int i = 8;
int m = x/8;
int n= x%8;
int a=1;
for(;n>0;n--)
{
System.out.println("第" + (a++) + "组共" + (m+1)+ "人");
}
Scanner in = new Scanner(System.in);
System.out.println("请输入人数...");
int x = in.nextInt();
int i = 8;
int m = x/8;
int n= x%8;
int a=1;
for(;a<=8;a++,(n+1)--)
{ if(n>0)
{
System.out.println("第" + a + "组共" + (m+1)+ "人");
}
else
System.out.println("第" + a + "组共" + m + "人");
}
public static void main(String a[]){
Scanner sc=new Scanner(System.in);
int read=sc.nextInt();
int countGroup=read/8+1;
int buffer=0;
for(int i=countGroup;i>=1;i--){
buffer=read/i;
read=read-buffer;
System.out.println("第"+(countGroup-i+1)+"组有"+buffer+"人");
}
}}
import java.util.Arrays;public class Test {
static final int COUNT = 8;
public static void main(String[] args) {
fun(26);
} static void fun(int n){
int group = n % 8 == 0 ? n / 8 : n / 8 + 1;//获取组数
int[] array = new int[group];
int avg = n / group;//获取每组最少人数
int m = n - group * avg;//获取剩下的人数m
for(int i = 0;i < array.length;i++){
if(i < m)
array[i] = avg + 1;//将剩下的人数平均分到前m组
else
array[i] = avg;
}
System.out.println(Arrays.toString(array));
}
}