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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Jason996 中级黑马   /  2014-12-16 23:37  /  1736 人查看  /  19 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Jason996 于 2014-12-16 23:38 编辑

/*        第三题:(优化的代码,是一位老程序员的编程思想)
        请输出满足这样条件的五位数。
                个位=万位
                十位=千位
                个位+十位+千位+万位=百位
        思路:
                1,根据以上给定条件,构造一个数。
                2,个位和万位只能用1-9的数字表示,用for循环
                2,十位和千位能用0-9的数字表示,在for循环里再嵌套一个for.
                3,注意,百位是个、十、千、万位相加,有可能大于10,而百位只能是0-9,所以必须有一个if判断。
                4,好处,这个方法只需运行90次。
*/
                int gewei, shiwei, baiwei, qianwei, wanwei;
                int num;
                int count = 0;
                int count2 = 0;
                for (gewei = 1; gewei <= 9; gewei++ )
                {
                        wanwei = gewei;
                        for (shiwei = 0; shiwei <= 9; shiwei++)
                        {
                                qianwei = shiwei;
                                baiwei = gewei + shiwei + qianwei + wanwei;

                                count++;
                                if (baiwei <= 9)
                                {
                                        num = wanwei * 10000 + qianwei * 1000 + baiwei * 100 + gewei;
                                        System.out.println(num);
                                        count2++;
                                }
                        }
                }
                System.out.println("count = "+count+"\n"+"count2 = "+count2);

        }
}

19 个回复

倒序浏览
楼主以后还是别发这样没有一点技术含量的贴了,一个简单的问题写的麻里麻烦

  1. class  Test
  2. {
  3.     public static void main(String[] args)
  4.     {
  5.         for(int gewan=1;gewan<=9;gewan++){
  6.             for(int shiqian=0;shiqian<=9;shiqian++){
  7.                 int bai=(shiqian+gewan)<<1;
  8.                 if(bai<=9)
  9.                     System.out.println("满足条件的数字:"+(10001*gewan+1010*shiqian+100*bai));
  10.             }
  11.         }
  12.     }
  13. }
复制代码

评分

参与人数 1黑马币 +6 收起 理由
杨佳名 + 6

查看全部评分

回复 使用道具 举报
待分析。
回复 使用道具 举报
as604049322 发表于 2014-12-17 06:41
楼主以后还是别发这样没有一点技术含量的贴了,一个简单的问题写的麻里麻烦

...

这个代码真的很简单
回复 使用道具 举报
学习了
回复 使用道具 举报
菜鸟路过.
回复 使用道具 举报
class Day04Test3
{
        public static void main(String[] args)
        {       
                int id[]=new int[5];
                for(int i=10000;i<=99999;i++){
                        //i的临时操作变量
                        int number = i;
                        //数字下标,0=个位 依次类推
                        int idx=0;
                        //循环计算出各个位数并且装入数组中
                        while(number>0){
                                id[idx]=number%10;
                                number/=10;
                                idx++;
                        }
                        //符合条件的显示出来
                        if(id[0]==id[4] && id[1] == id[3] && (id[0]+id[1]+id[3]+id[4])==id[2] ){
                                System.out.println(i);
                        }
                       
               
                }
        }
}
楼主继续加油!
回复 使用道具 举报
qig123 中级黑马 2014-12-18 22:03:22
8#
好多大神出没,路过
回复 使用道具 举报
kenhe 中级黑马 2014-12-18 22:14:51
9#
这样是不是更简单?
class PrintDemo
{
        public static void main(String[] args)
        {
                int a,b,c,d,e;
                int i=10000;
                while (i<100000)
                {
                        a=i%10;
                        b=i/10%10;
                        c=i/100%10;
                        d=i/1000%10;
                        e=i/10000%10;
                        if (c==a+b+d+e)
                        {
                                System.out.println(i);
                        }
                }
        }
}
回复 使用道具 举报
kenhe 发表于 2014-12-18 22:14
这样是不是更简单?
class PrintDemo
{

这根本不满足条件, if ( a==e && b==d && c==a+b+d+e)
这样判断我想差不多。
回复 使用道具 举报
  1. class ClassDemo6
  2. {
  3.         public static void main(String[] args)
  4.         {        int z=0;
  5. bastard:for ( int  a=10000;a<=9999999;a++)
  6.                         {
  7.                                 if((a%10==a/10000)&(a/10%10==a/1000%10)&(a/100%10==a%10+a/10%10+a/1000%10+a/10000))
  8.                         {
  9.                                 System.out.println(a);
  10.                                 z++;
  11.                                 if (z==5)
  12.                                 {
  13.                                         break bastard;
  14.                                 }
  15.                         }
  16.                                
  17.                 }
  18.         }
  19. }
复制代码
回复 使用道具 举报
原来可以有那么多方法
回复 使用道具 举报
强势围观。。。。。。。。。
回复 使用道具 举报
kenhe 发表于 2014-12-18 22:14
这样是不是更简单?
class PrintDemo
{

这种算法看着代码和理解简单,但是它在底层要运算99999-10000次的。我分享的这段代码只需要运算99次就能得到答案。亲,你说那个代码更好呢?
回复 使用道具 举报
Alexrl 中级黑马 2014-12-19 23:15:41
15#
强势围观楼主被喷
回复 使用道具 举报
有点臃肿。。。
回复 使用道具 举报
as604049322 发表于 2014-12-17 06:41
楼主以后还是别发这样没有一点技术含量的贴了,一个简单的问题写的麻里麻烦

...

好方法,今天学习了,换了个思路就不一样了!
回复 使用道具 举报
好多大神,可以领走一个吗?!。。。。:loveliness:
回复 使用道具 举报
不是一个世界的人哈,只能默默观望着你们这些大神
回复 使用道具 举报
红楼 中级黑马 2014-12-20 21:25:22
20#
学习了。。。。。。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马