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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© yaodd321 中级黑马   /  2014-11-3 22:11  /  955 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这个问题以前问过,没有好的答案,只要再提问依次:(

吸血鬼数字是指位数为偶数的数字,可以由一对数字相乘而得到,而这对数字个包含乘积的一半位数的数字,以两个0结尾的数字是不允许的。例如1260=12*60,1827=21*87,2187=27*81,要求找出4位数的所有吸血鬼数字。

1 个回复

倒序浏览
  1. import java.util.*;
  2. class VampireNum
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 for (int i=1000; i<10000; i++)
  7.                 {
  8.                         for (int j=10;j*j<=i ;j++ )
  9.                         {
  10.                                 if(i%100==0)
  11.                                         continue;
  12.                                 if((i%j==0)&&(i/j>=10&&i/j<=99))
  13.                                 {
  14.                                         int temp=i/j;
  15.                                         byte[] b1=new Integer(i).toString().getBytes();
  16.                                         byte[] b2=(new Integer(j).toString()+new Integer(temp).toString()).getBytes();
  17.                                         Arrays.sort(b1);
  18.                                         Arrays.sort(b2);
  19.                                         if(Arrays.equals(b1,b2))
  20.                                                 System.out.println(i+"="+j+"*"+temp);
  21.                                                                
  22.                                 }
  23.                         }

  24.                 }
  25.                
  26.         }
  27. }
复制代码



思路就是遍历所有的四位数,并进行因式分解,当两个因子都为两位数的时候,将该数各位取出存入一个byte数组中,并排序,同时,将两个因子中的各位数字取出并存入另一个byte数组中,并排序,当且仅当这两个byte数组相等时,该数为所求吸血鬼数。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马