A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 吴兆焕 初级黑马   /  2012-5-17 14:52  /  2654 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

题是这样的:
一群学生,排成5排多3个,排成7排多4个。请问这群学生最少有多少人?

用最简单的java代码解题,代码的写法,还有人数是多少?

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

15 个回复

倒序浏览
这是小学生的题吗 我怎么感觉要用3个变量解决 而且还要做判断。
回复 使用道具 举报
本帖最后由 冯越 于 2012-5-17 15:07 编辑

public class Demo {
        public static void main(String[] args) {
                int x = 0;    //其实这个x的初值可以设为15的 因为排5排剩3个 那个说明3个肯定够不成排5排时的一排 那说明这个人数至少是15以上
                while(true) {
                        if(x % 5 == 3 && x % 7 == 4) {
                                
                                break;
                        } else
                                x ++;
                }
                System.out.println("小学生的人数是:" + x);
        }

}
output:小学生的人数是:18
你看可以不?

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
冯越 发表于 2012-5-17 15:03
public class Demo {
        public static void main(String[] args) {
                int x = 0;    / ...

代码,还有没有更简单的方法呀?
回复 使用道具 举报
用个for循环呗
class  Test
{
        public static void main(String[] args)
        {
                //   用个for循环, 可以先假设 学生人数不超过100人,遍历一次.
                          for (int i=0;i<=100 ;i++ )
                          {
                                  if (i%5==3 && i%7==4)
                                  {
                                          System.out.println(i);
                                  }
                          }



        }
}

评分

参与人数 1技术分 +1 收起 理由
攻城狮 + 1 赞一个!

查看全部评分

回复 使用道具 举报
  1. public class PTest{
  2.         public static void main(String[] args)
  3.         {
  4.                 int temp =1;//排5排时一排站几个人,不会少于一个吧?
  5.                 while((temp*5-1)%7!=0)  //这个是从   ((temp*5+3)-4) % 7 转化过来的,因为总人数是一定滴,
  6.                 {
  7.                                 temp++;
  8.                 }
  9.                 System.out.println(temp*5+3);
  10.         }
  11. }
复制代码
回复 使用道具 举报
郭宁 中级黑马 2012-5-17 16:14:38
7#
冯越 发表于 2012-5-17 15:03
public class Demo {
        public static void main(String[] args) {
                int x = 0;    / ...

你从15开始  ~我排五排剩仨,排七排剩一个~ 咋办?
回复 使用道具 举报
int countOfStu = 0;
while (countOfStu <= 1000) {
        if (countOfStu % 5 == 3 && countOfStu % 7 == 4) {
                System.out.println(countOfStu);
        }
        countOfStu++;
}
1000以内的都可以满足了。
回复 使用道具 举报
冯越 中级黑马 2012-5-17 16:46:07
9#
郭宁 发表于 2012-5-17 16:14
你从15开始  ~我排五排剩仨,排七排剩一个~ 咋办?

这要看你怎么理解问题了,你要是把多那3个理解为不足以排成和前面一排一样的人数那自然就是我那种写法。你要是理解为前面的排数人为死规定的 比如说只能排5排  那自然是你那种写法
回复 使用道具 举报
孙峰 黑马帝 2012-5-17 17:42:08
10#
刚准备写,有事出去了,回来一看都这么多回答了,那我就写下自己的思路吧。x=5a+3,y=7b+4,  a ,b分别从1到100吧(应该够大了),得到的结果赋值给两个数组:arr1  ,arr2.     然后两数组里元素比较。第一个一样的应该就是最少人数了。
回复 使用道具 举报
我写的 也还凑合额~~  为啥木有技术分哩~~~~~{:soso_e149:}
回复 使用道具 举报
本帖最后由 隋丙跃 于 2012-5-17 18:49 编辑

public static int getStudentNumber() {
                for(int i = 1,num=0 ; ;i++){
                        if((num=5*i+3)%7-4==0)
                                return num;                        
                }
        }


最简单的方法,执行次数也是最少的计数器不用从1开始算 直接从5的倍数+3算起

评分

参与人数 2技术分 +1 黑马币 +3 收起 理由
职业规划-刘倩老师 + 1
黑马罗坚 + 3 赞一个!这算法不错

查看全部评分

回复 使用道具 举报
黄秋 黑马帝 2012-5-17 22:02:27
13#
设每排n人,总人数是 5*n+3,排成7排多4个 --> (总人数-4)%7=0:
  1. class Test {
  2.         public static void main(String[] args) {
  3.                 //设每排n人
  4.                 int n;
  5.                 for(n=1; ;n++) {
  6.                         if((5*n+3-4)%7==0)
  7.                                 break;
  8.                 }
  9.                 System.out.println(5*n+3);
  10.         }
  11. }
复制代码
回复 使用道具 举报
黄秋 黑马帝 2012-5-17 22:03:06
14#
本帖最后由 黄秋 于 2012-5-17 22:59 编辑

重复提交了,干脆将其改为 while 循环:

设每排n人,总人数是 5*n+3,排成7排多4个 --> (总人数-4)%7=0:
  1. class Test {
  2.         public static void main(String[] args) {
  3.                 //设每排n人,总人数m人
  4.                 int n=1,m=5*n+3;               
  5.                 while((m-4)%7!=0){
  6.                         n++;
  7.                         m=5*n+3;
  8.                 }
  9.                 System.out.println(m);               
  10.         }
  11. }
复制代码
回复 使用道具 举报
public class ar{
      
         public static void main(String[] args)
        {
                         int y=0;
   //   用个for循环, 人数是算不准的,结果有N个,比如人数在1千以内,那么就有29个结果符合
     
               for (int i=5;i<1000;i++ )
                  {
                     if (i%5==3 && i%7==4)
                  {
                           System.out.print("人数"+i+","+"\t");
                                                            y++;
                       }
                       }
                                        System.out.println();
                                        System.out.println("结果个数"+y);

        }
}
回复 使用道具 举报
public class CountStu {

        public static void main(String[] args) {
                //学生人数肯定大于4 因为3,4都不够一排
                System.out.println("学生人数可能为:");
                int num=5;
                while(num<1000){
                        if(num%5==3 && num%7==4)
                                System.out.println(num);
                        num++;
                }
               
        }
}
学生人数可能为:
18
53
88
123
158
193
228
263
298
333
368
403
438
473
508
543
578
613
648
683
718
753
788
823
858
893
928
963
998
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马