田径赛跑中,有8条跑道,从键盘输入一个整数n(n>8)作为参加比赛的选手人数,安排分组要求人数差距最少,依次打印输出每组安排的选手人数。

解决方案 »

  1.   

    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))+"人");
    }


    }

    }
    }
      

  2.   

    这个很简单吧,先算出平均每组多少人.
    例如有:
    int n = 30;
    // 平均多少人
    int avg = n / 8;
    // 多余的人,即余数
    int left = n % 8;
    余数就从第一组开始加1就行了。
      

  3.   

    下面是我的代码。 由于着急。 还有几个数字没法分组 例如 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);
         }
        }
    }
    }
      

  4.   

    啊呀呀,怎么都写得那么复杂啊???几个for循环就搞定了!
      

  5.   

    先确定需要多少组
    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);
        }
    }
    这样就行了吧。
      

  6.   

    我的: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
      

  7.   

    上面的boolean m = false;这句是没有用的,前面直接复制了zj84604741的,没有删掉 呵呵~~
      

  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 + "人");
    }
    }
      

  9.   

    额,不知道我又没有理解你的意思……
    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();
    }

    }
    }
      

  10.   

    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]);
                    }
                    
                            }
      

  11.   

    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)+ "人");
              }
      

  12.   

    刚才写错了    有点东西  没考虑到  现在改了下   
       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 + "人");
         }
      

  13.   

    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+"人");
    }
    }}
      

  14.   


    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));
    }
    }