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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zlpiano 中级黑马   /  2015-7-9 23:04  /  336 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

寻找这样一个九位数:包括数字1到9,前一位能被1整除,前两位能被2整除,依次类推,一直到前九位能被9整除,这个数是唯一的
  1. class Demo
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 new No(0).method();
  6.         }

  7. }

  8. class No
  9. {
  10.         boolean[] a = new boolean[9];
  11.         int m=0;
  12.         int n=0;
  13.         int hehe=0;
  14.        
  15.         public No(int hehe)
  16.         {
  17.                 this.hehe=hehe;
  18.         }
  19.         public void method()
  20.         {
  21.                 for(int i=0;i<9;i++)
  22.                 {
  23.                         a[i]=true;
  24.                 }
  25.                
  26.                 m=hehe;
  27.                 while(m!=0)
  28.                 {
  29.                         n=m%10;
  30.                         m=m/10;
  31.                         a[n-1]=false;
  32.                 }
  33.                 for(int i=0;i<9;i++)
  34.                 {
  35.                         if(a[i]==false)
  36.                                 continue;
  37.                         m=hehe*10+i+1;
  38.                         int u=num(m);
  39.                         if(m%u==0 && u!=9)
  40.                         {
  41.                                 //System.out.println("进入下一分支:"+m);
  42.                                 new No(m).method();
  43.                         }
  44.                        
  45.                         else if(m%u==0 && u==9)
  46.                         {
  47.                                 System.out.println("找到一个数!!!!!!!!!!!!!!!!!!!!!!!!!!:"+m+"噢哈哈哈哈");
  48.                         }
  49.                         else
  50.                         {
  51.                                 //System.out.println("丢弃这一分支:"+m);       
  52.                         }                       
  53.                 }
  54.         }
  55.         public static int num(int k)
  56.         {
  57.                 int count=0;
  58.                 while(k!=0)
  59.                 {
  60.                         k=k/10;
  61.                         count++;
  62.                 }
  63.                 return count;
  64.         }
  65. }
复制代码


不知道有没有更简洁的方法

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马