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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 邵震 于 2013-4-7 16:35 编辑

韩信点兵。
刘邦和韩信的故事,这个大家都知道把。
刘邦当时问了韩信一句,如果带兵,我可以带多少人,你可以带多少人。
韩信答曰:大王最多十万,而韩信则是多多益善。
从此以后啊,刘邦就对韩信怀恨在心,有一次,刘邦和韩信聊天,看到面前有一大队士兵,刘邦就问:你能准确的说出这里有多少士兵吗?韩信想了想:说,可以。
接着,他就让士兵每3个人一排,结果余下2人;每5个人一排,结果余下3人;每7个人一排,结果也是余下2人。
然后,他微笑的告诉了刘邦士兵的人数。刘邦大为震惊。
请问如果这群士兵人数在0-1000之间,那么,这群士兵可能有多少人呢?
提示:这个故事纯属杜撰,不用去查,做题即可。

欢迎每个人都来答题看看你们的思路是什么,因为我感觉我的代码太奇葩了。

所以想看看你们的思路。我的代码回帖可见,如果真心想答题的就别看我的代码,然后答完题把你答案回复我你自然就知道我的是怎么个奇葩了

/*
思路:
进行for循环次数是1000,
设置一个变量x等于1,
for循环嵌套if循环进行运算
如果0==(x-2)%3就进入下一个if判断
0==(x-3%)5,如果相等进行最后一个if循环
0==(x-2)%7,如果满足则打印

*/
class Java0407d1
{
        public static void main(String[] args)
        {
                for (int soldier=1;soldier<=1000 ;soldier++ )
                {
                        if ((soldier-2)%3==0)
                        {
                                if (0==(soldier-3)%5)
                                {
                                        if (0==(soldier-2)%7)
                                        {
                                                System.out.println("有可能是:"+soldier);
                                        }
                                }
                        }
                }
        }
}

//一个for语句带三个if语句。。。。。好像一只大雁。





14 个回复

倒序浏览
本帖最后由 邓宫财 于 2013-4-7 16:28 编辑
  1. public class Soldier {
  2.         public static void main(String[] args) {
  3.                 int soldier = 0;
  4.                 for(int i = 1000; i > 0; i--){
  5.                         soldier = i;
  6.                         if((soldier-2)%7==0 && (soldier-3)%5 ==0  && (soldier-2)%3 ==0){
  7.                                 System.out.println("可能有" + soldier +"人");
  8.                         }
  9.                 }
  10.         }

  11. }
复制代码
回复 使用道具 举报
看看,参考参考
回复 使用道具 举报
瞅瞅            
回复 使用道具 举报
嘿嘿,好说,偶是介样想滴:直接循环,满足条件的输出即:
package qy.one.com;

public class quyu {

        public static void main(String[] args) {
                for (int i = 0; i < 1000; i++) {
                        if (i%3==2&&i%5==3&&i%7==2) {
                                System.out.println("i="+i);
                        }
                }
        }
}
回复 使用道具 举报
邓宫财 发表于 2013-4-7 16:16

:Q我脑子进水了 怎么就忘了短路了  哎 还是经验少啊 貌似短路就在当初打季度的时候用过一次
回复 使用道具 举报
嘟嘟123 发表于 2013-4-7 16:33
嘿嘿,好说,偶是介样想滴:直接循环,满足条件的输出即:
package qy.one.com;

:L嘟嘟都短路了

看来是我的脑子短路了
回复 使用道具 举报
邵震 发表于 2013-4-7 16:34
我脑子进水了 怎么就忘了短路了  哎 还是经验少啊 貌似短路就在当初打季度的时候用过一次 ...

额..嘿嘿。木事木事。
记住就行了。
回复 使用道具 举报
瞅瞅是什么情况
回复 使用道具 举报
同时满足韩信的三个条件
直接循环就行了
回复 使用道具 举报
完全不用逐一的去判断,这么搞也可以
  1. for (int i=9;i<1000 ;i+=7 )
  2.                 {
  3.                         if (i%3==2&&i%5==3&&i%7==2)
  4.                         {
  5.                                 System.out.println(i);
  6.                         }
  7.                 }
复制代码
回复 使用道具 举报
  1. public class Think {
  2.         public static void main(String[] args){
  3.                 for(int i=5;i<1000;i+=3){//p 这里稍微提高点效率.答案是一样的.
  4.                         if(i%3==2&&i%5==3&&i%7==2)
  5.                                 System.out.print(i+" ");
  6.                 }
  7.         }
  8. }
  9. //23 128 233 338 443 548 653 758 863 968
复制代码
回复 使用道具 举报

  1. public class Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 int num=10;
  6.                 for (int x=0;x<990;x++,num++)
  7.                 {
  8.                         if (num%3==2&&num%5==3&&num%7==2)
  9.                                 System.out.print(num+" ");
  10.                 }
  11.         }
  12. }
复制代码
求高人代码一看
回复 使用道具 举报
- -,突然发现其实大家的思路都差不多嘛。只要同时满足以上3个条件输出就对了。
回复 使用道具 举报
邵震 发表于 2013-4-7 16:35
嘟嘟都短路了

看来是我的脑子短路了

:L啥意思
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马