吸血鬼数 大家帮忙吧 偶数位的数字4位的:像1260 = 21×60 1827= 21×87俩个乘数每个为结果中的俩个数字组成,但4位数不能以00结尾列出 所有的四位数的吸血鬼数 谢谢。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 此回复为自动发出,仅用于显示而已,并无任何其他特殊作用楼主【winterfeng8586】截止到2008-07-26 18:19:23的历史汇总数据(不包括此帖):发帖的总数量:0 发帖的总分数:0 每贴平均分数:0 回帖的总数量:2 得分贴总数量:0 回帖的得分率:0% 结贴的总数量:0 结贴的总分数:0 无满意结贴数:0 无满意结贴分:0 未结的帖子数:0 未结的总分数:0 结贴的百分比:---------------------结分的百分比:---------------------无满意结贴率:---------------------无满意结分率:---------------------如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html 简单方法没有想到。最笨的就是把所以情况if一下,符号的输出。给从网上扒下点/** * 功能:找出四位数中由二位数相乘得出的吸血鬼数 * @author wiley */public class Vampire { public static void main(String[] arg){ String[] ar_str1,ar_str2; int sum=0; //双重循环穷举 for(int i=10;i<100;i++){ //j=i+1避免重复 for(int j=i+1;j<100;j++){ int i_val=i*j; if(i_val<1000||i_val>9999)continue;//积小于1000或大于9999排除,继续下一轮环 ar_str1=String.valueOf(i_val).split(""); ar_str2=(String.valueOf(i)+String.valueOf(j)).split(""); java.util.Arrays.sort(ar_str1); java.util.Arrays.sort(ar_str2); if(java.util.Arrays.equals(ar_str1, ar_str2)){//排序后比较,为真则找到一组 sum++; System.out.println("第"+sum+"组: "+i+"*"+j+"="+i_val); } } } System.out.println("共找到"+sum+"组吸血鬼数"); }}运行结果:C:\work>java Vampire第1组: 15*93=1395第2组: 21*60=1260第3组: 21*87=1827第4组: 27*81=2187第5组: 30*51=1530第6组: 35*41=1435第7组: 80*86=6880共找到7组吸血鬼数----------------------摘自http://www.java3z.com/cwbwebhome/article/article5/5724.html?id=1083这里 public class Vampire { public static void main(String[] arg){ String[] ar_str1,ar_str2; int sum=0; //双重循环穷举 for(int i=10;i <100;i++){ //j=i+1避免重复 for(int j=i+1;j <100;j++){ int i_val=i*j; if(i_val <1000 ¦ ¦i_val>9999)continue;//积小于1000或大于9999排除,继续下一轮环 ar_str1=String.valueOf(i_val).split(""); ar_str2=(String.valueOf(i)+String.valueOf(j)).split(""); java.util.Arrays.sort(ar_str1); java.util.Arrays.sort(ar_str2); if(java.util.Arrays.equals(ar_str1, ar_str2)){//排序后比较,为真则找到一组 sum++; System.out.println("第"+sum+"组: "+i+"*"+j+"="+i_val); } } } System.out.println("共找到"+sum+"组吸血鬼数"); } } 运行结果: C:\work>java Vampire 第1组: 15*93=1395 第2组: 21*60=1260 第3组: 21*87=1827 第4组: 27*81=2187 第5组: 30*51=1530 第6组: 35*41=1435 第7组: 80*86=6880 共找到7组吸血鬼数 楼上的聪明 楼主是在看Think In Java吧。 正好这题我做了, public class Fun {public static void main(String[] args) { int x = Integer.parseInt(args[0]); for (int i=0; i<x; i++) for (int j=x; j>=i; j--) { if (isVampireNumber(i, j)) System.out.println(i*j + "=" + i + "*" + j); }}private static boolean isVampireNumber(int a, int b) { String str1 = Integer.toString(a*b); char[] chars1 = str1.toCharArray(); String str2 = Integer.toString(a) + Integer.toString(b); char[] chars2 = str2.toCharArray(); sortChars(chars1); sortChars(chars2); if (chars1.length != chars2.length) return false; for (int i=0; i<chars1.length; i++) { if (chars1[i] != chars2[i]) return false; } return true;}private static void sortChars(char[] x) { for (int i=0; i<x.length; i++) for (int j=0; j<x.length-1; j++) { if (x[j] > x[j+1]) { char t = x[j]; x[j] = x[j+1]; x[j+1] = t; } }}} import java.util.*;public class Test { public static void main(String[] args) { int[] s1 = new int[4]; int[] s2 = new int[4]; for (int i=10; i <100; i++) for (int j=i; j<100; j++) { int n = i * j; /**n,i,j的各位数字分别存储在数组s1,s2中*/ if((n>1000) && (n%1000) != 0){ s1[0] = n % 10; s1[1] = (n/10) % 10; s1[2] = (n/100) % 10; s1[3] = (n/1000) % 10; s2[0] = i % 10; s2[1] = (i/10) % 10; s2[2] = j % 10; s2[3] = (j/10) % 10; Arrays.sort(s1); //对数组进行快速排序 Arrays.sort(s2); if(Arrays.equals(s1,s2)) //判断排序后的数组s1 ,s2是否完全匹配 System.out.println(n); } } }} java 解矩阵方程 问题。 Jframe被用户最小化后,如何实现在一段时间后还原到原来位置,并显示出来? 关于throws和try catch 的一点疑惑 System.out.println(ghyghost_Boolean.hashCode());得出的数字是什么意思? 初学者提问:如何将数组值写入文件 Java Applet 调整控件大小的问题。 java创建文件问题 一个关于JTree的问题 如何在sql server数据库中存文件?豪爽送分! 为何构造函数中少作事情好呢? 有人能帮忙说说怎么实现查找
楼主【winterfeng8586】截止到2008-07-26 18:19:23的历史汇总数据(不包括此帖):
发帖的总数量:0 发帖的总分数:0 每贴平均分数:0
回帖的总数量:2 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:0 结贴的总分数:0
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:---------------------结分的百分比:---------------------
无满意结贴率:---------------------无满意结分率:---------------------
如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
给从网上扒下点
/**
* 功能:找出四位数中由二位数相乘得出的吸血鬼数
* @author wiley
*/
public class Vampire {
public static void main(String[] arg){
String[] ar_str1,ar_str2;
int sum=0;
//双重循环穷举
for(int i=10;i<100;i++){
//j=i+1避免重复
for(int j=i+1;j<100;j++){
int i_val=i*j;
if(i_val<1000||i_val>9999)continue;//积小于1000或大于9999排除,继续下一轮环
ar_str1=String.valueOf(i_val).split("");
ar_str2=(String.valueOf(i)+String.valueOf(j)).split("");
java.util.Arrays.sort(ar_str1);
java.util.Arrays.sort(ar_str2);
if(java.util.Arrays.equals(ar_str1, ar_str2)){//排序后比较,为真则找到一组
sum++;
System.out.println("第"+sum+"组: "+i+"*"+j+"="+i_val);
}
}
}
System.out.println("共找到"+sum+"组吸血鬼数");
}
}运行结果:
C:\work>java Vampire
第1组: 15*93=1395
第2组: 21*60=1260
第3组: 21*87=1827
第4组: 27*81=2187
第5组: 30*51=1530
第6组: 35*41=1435
第7组: 80*86=6880
共找到7组吸血鬼数
----------------------摘自http://www.java3z.com/cwbwebhome/article/article5/5724.html?id=1083这里
public static void main(String[] arg){
String[] ar_str1,ar_str2;
int sum=0;
//双重循环穷举
for(int i=10;i <100;i++){
//j=i+1避免重复
for(int j=i+1;j <100;j++){
int i_val=i*j;
if(i_val <1000 ¦ ¦i_val>9999)continue;//积小于1000或大于9999排除,继续下一轮环
ar_str1=String.valueOf(i_val).split("");
ar_str2=(String.valueOf(i)+String.valueOf(j)).split("");
java.util.Arrays.sort(ar_str1);
java.util.Arrays.sort(ar_str2);
if(java.util.Arrays.equals(ar_str1, ar_str2)){//排序后比较,为真则找到一组
sum++;
System.out.println("第"+sum+"组: "+i+"*"+j+"="+i_val);
}
}
}
System.out.println("共找到"+sum+"组吸血鬼数");
}
} 运行结果:
C:\work>java Vampire
第1组: 15*93=1395
第2组: 21*60=1260
第3组: 21*87=1827
第4组: 27*81=2187
第5组: 30*51=1530
第6组: 35*41=1435
第7组: 80*86=6880
共找到7组吸血鬼数 楼上的聪明
public class Fun {public static void main(String[] args) {
int x = Integer.parseInt(args[0]);
for (int i=0; i<x; i++)
for (int j=x; j>=i; j--)
{
if (isVampireNumber(i, j))
System.out.println(i*j + "=" + i + "*" + j);
}
}private static boolean isVampireNumber(int a, int b) {
String str1 = Integer.toString(a*b);
char[] chars1 = str1.toCharArray();
String str2 = Integer.toString(a) + Integer.toString(b);
char[] chars2 = str2.toCharArray();
sortChars(chars1);
sortChars(chars2);
if (chars1.length != chars2.length) return false;
for (int i=0; i<chars1.length; i++) {
if (chars1[i] != chars2[i])
return false;
}
return true;
}private static void sortChars(char[] x) {
for (int i=0; i<x.length; i++)
for (int j=0; j<x.length-1; j++) {
if (x[j] > x[j+1]) {
char t = x[j];
x[j] = x[j+1];
x[j+1] = t;
}
}
}
}
public static void main(String[] args) {
int[] s1 = new int[4];
int[] s2 = new int[4];
for (int i=10; i <100; i++)
for (int j=i; j<100; j++) {
int n = i * j;
/**n,i,j的各位数字分别存储在数组s1,s2中*/
if((n>1000) && (n%1000) != 0){
s1[0] = n % 10;
s1[1] = (n/10) % 10;
s1[2] = (n/100) % 10;
s1[3] = (n/1000) % 10;
s2[0] = i % 10;
s2[1] = (i/10) % 10;
s2[2] = j % 10;
s2[3] = (j/10) % 10;
Arrays.sort(s1); //对数组进行快速排序
Arrays.sort(s2);
if(Arrays.equals(s1,s2)) //判断排序后的数组s1 ,s2是否完全匹配
System.out.println(n);
}
}
}
}