当前位置: 代码迷 >> Java相关 >> [求助]吸血鬼数字
  详细解决方案

[求助]吸血鬼数字

热度:65   发布时间:2007-07-24 19:10:36.0
[求助]吸血鬼数字

public class xixuegui {
public static void main (String[] args) {
int i,j,k,a,b,c,d,n,m;
for(i=1001;i<9999;i++){
a=i/1000;
b=(i-a*1000)/100;
c=(i-a*1000-b*100)/10;
d=i-a*1000-b*100-c*10;

for(j=1;j<10;j++){
for(k=0;k<10;k++){
if(i==(j*1000)+(k*100)) continue;
}
}

if(i==(a*10+b)*(c*10+d)) System.out.println(i+"is xixuegui");
if(i==(a*10+b)*(d*10+c)) System.out.println(i+"is xixuegui");
if(i==(b*10+a)*(c*10+d)) System.out.println(i+"is xixuegui");
if(i==(b*10+a)*(d*10+c)) System.out.println(i+"is xixuegui");

if(i==(a*10+c)*(b*10+d)) System.out.println(i+"is xixuegui");
if(i==(a*10+c)*(d*10+b)) System.out.println(i+"is xixuegui");
if(i==(c*10+a)*(b*10+d)) System.out.println(i+"is xixuegui");
if(i==(c*10+a)*(d*10+b)) System.out.println(i+"is xixuegui");

if(i==(a*10+d)*(b*10+c)) System.out.println(i+"is xixuegui");
if(i==(a*10+d)*(c*10+b)) System.out.println(i+"is xixuegui");
if(i==(d*10+a)*(b*10+c)) System.out.println(i+"is xixuegui");
if(i==(d*10+a)*(c*10+b)) System.out.println(i+"is xixuegui");

if(i==(b*10+c)*(a*10+d)) System.out.println(i+"is xixuegui");
if(i==(b*10+c)*(d*10+a)) System.out.println(i+"is xixuegui");
if(i==(c*10+b)*(a*10+d)) System.out.println(i+"is xixuegui");
if(i==(c*10+b)*(d*10+a)) System.out.println(i+"is xixuegui");
}
}
}

求助各位啊~~~这是我刚写的一个输出4位数"吸血鬼数字"的程序,虽然可以正确输出,但是我觉着这个做法太麻烦了,想得到一个简化代码的而且高效的方法,而且我这程序实际可以说还没完成,因为输出有重复,而我不希望有重复,虽然我知道一个方法,可是由于代码太多我实在觉得那样写出来有点丢人,所以求助各位帮帮我啦,小弟感激不尽~~~~~~

差点忘了,所谓“吸血鬼数字”就是指位数为偶数的数字(我们算得是4位的),可以由一对数字相乘而得到,而这对数字各包含乘积的一半位数字,其中从偶数位数字中选取的数字可以任意排列。以两个0截尾的数字是不允许的,例如:

1260=21*60

1827=21*87

2187=27*81

等等。

大家帮帮忙啊~~~~~小弟感激不尽啊~~~


[此贴子已经被作者于2007-7-24 19:12:41编辑过]

搜索更多相关的解决方案: 吸血鬼  数字  public  args  

----------------解决方案--------------------------------------------------------
不太理解“其中从偶数位数字中选取的数字可以任意排列”

1260=21*60
这个怎么解释?
----------------解决方案--------------------------------------------------------

1260 就是那个要求的偶位数(在这里就是四位数)
1 2 6 0四个数随便选两个数字组成一个二位数 两外两个组成另一个二位数 这四个字可任意排列
1260 就是那个四位数 21 和 60 不就是那两个二位数?还不懂?


----------------解决方案--------------------------------------------------------
偶数位数字中选取的数字

这个限制 是什么意思?

方法似乎只能用穷举吧



----------------解决方案--------------------------------------------------------

啊啊啊啊啊啊啊啊啊啊啊 谁给个办法啊啊啊啊啊啊啊


----------------解决方案--------------------------------------------------------
啊啊啊啊啊啊啊啊啊啊啊 谁给个办法啊啊啊啊啊啊啊
怎么没人知道这个题怎么解答?
----------------解决方案--------------------------------------------------------
是指位数为偶数的数字 这个什么意思?
----------------解决方案--------------------------------------------------------
回复:(大男孩)是指位数为偶数的数字 这个什么意思?...

啊 位数为偶数的数字 在这里就是那个四位数啊


----------------解决方案--------------------------------------------------------
QUOTE:
以下是引用可可熊在2007-7-24 19:18:21的发言:
不太理解“其中从偶数位数字中选取的数字可以任意排列”

1260=21*60
这个怎么解释?

不太理解“其中从偶数位数字中选取的数字可以任意排列
----------------解决方案--------------------------------------------------------

回复:(可可熊)以下是引用可可熊在2007-7-24 19:18:...

服了 我都说成这样了你都没理解我也没办法了 这题也不是我出的 书上就这么写的 我就不明白了 有什么不理解的? 晕了~~~


----------------解决方案--------------------------------------------------------
  相关解决方案