62,615
社区成员
发帖
与我相关
我的任务
分享
/**
* Create by TPig
* Since 2011-7-6下午05:55:56
*/
package com.xiaoxindd.thinkjava.part4;
import java.util.Arrays;
/**
* 类说明:
*
* @Author Create by TPig Since 2011-7-6 下午05:55:56
*/
public class Demo4_1 {
public static void main(String[] args) {
int a = 10;
while (a < 100) {
a++;
int b = 99;
while (b > 10 && b > a) {
b--;
int sum = a * b;
if(split(sum).length != 4) {
// 乘积不等于4位
continue;
}
if(sum % 100 == 0) {
continue;
}
int[] aSplit = split(a);
int[] bSplit = split(b);
int[] sumSplit = split(sum);
int i = compareCount(sumSplit, aSplit);
if(i != 2) {
continue;
}
i = compareCount(sumSplit, bSplit);
if(i != 2) {
continue;
}
System.out.println(a + " " + b + " " + sum);
}
}
}
/**
* 方法说明:分割一个整数,生成数组
*
* @param num
* @return
* @Author Create by TPig Since 2011-7-7 下午02:00:32
*/
private static int[] split(int num) {
int[] it = new int[1];
int i = 0;
while (num != 0) {
if(i == it.length) {
it = Arrays.copyOf(it, it.length + 1);
}
it[i++] = num % 10;
num /= 10;
}
return it;
}
/**
* 方法说明:比较两个数组是否有相同数字
*
* @param sum
* @param b
* @return
* @Author Create by TPig Since 2011-7-7 下午01:49:10
*/
private static int compareCount(int[] sum, int[] b) {
int i = 0;
for (int j = 0; j < sum.length; j++) {
for (int m = 0; m < b.length; m++) {
if(sum[j] == b[m]) {
sum[j] = -1;
b[m] = -2;
i++;
break;
}
}
}
return i;
}
}
/**
* Create by TPig
* Since 2011-7-6下午05:55:56
*/
package com.xiaoxindd.thinkjava.part4;
import java.util.Arrays;
/**
* 类说明:
*
* @Author Create by TPig Since 2011-7-6 下午05:55:56
*/
public class Demo4_1 {
public static void main(String[] args) {
int a = 10;
int b = 10;
int sum = a * b;
while (a < 100 && sum < 10000) {
a++;
b = 10;
while (b < 100) {
b++;
sum = a * b;
if(split(sum).length != 4) {
// 乘积不等于4位
continue;
}
if(sum % 100 == 0) {
continue;
}
int[] aSplit = split(a);
int[] bSplit = split(b);
int[] sumSplit = split(sum);
int i = compareCount(sumSplit, aSplit);
if(i != 2) {
continue;
}
i = compareCount(sumSplit, bSplit);
if(i != 2) {
continue;
}
System.out.println(a + " " + b + " " + sum);
}
}
}
/**
* 方法说明:分割一个整数,生成数组
*
* @param num
* @return
* @Author Create by TPig Since 2011-7-7 下午02:00:32
*/
private static int[] split(int num) {
int[] it = new int[1];
int i = 0;
while (num != 0) {
if(i == it.length) {
it = Arrays.copyOf(it, it.length + 1);
}
it[i++] = num % 10;
num /= 10;
}
return it;
}
/**
* 方法说明:比较两个数组是否有相同数字
*
* @param sum
* @param b
* @return
* @Author Create by TPig Since 2011-7-7 下午01:49:10
*/
private static int compareCount(int[] sum, int[] b) {
int i = 0;
for (int j = 0; j < sum.length; j++) {
for (int m = 0; m < b.length; m++) {
if(sum[j] == b[m]) {
sum[j] = -1;
b[m] = -2;
i++;
break;
}
}
}
return i;
}
}
15 93 1395
21 60 1260
21 87 1827
27 81 2187
30 51 1530
35 41 1435
41 35 1435
51 30 1530
60 21 1260
80 86 6880
81 27 2187
86 80 6880
87 21 1827
93 15 1395
public class Xixuegui {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自动生成方法存根
int a,b,c,d;
for(int k=1001;k <10000;k++){
int q=k;
if(q%100==0)
continue;
a = k / 1000;
b = (k % 1000) / 100;
c = (k % 100) / 10;
d = (k % 10);
if(q==(10*a+b)*(10*c+d) ¦ ¦q==(10*a+b)*(10*d+c) ¦ ¦q==(10*b+a)*(10*c+d) ¦ ¦q==(10*b+a)*(10*d+c) ¦ ¦
q==(10*a+c)*(10*b+d) ¦ ¦q==(10*a+c)*(10*d+b) ¦ ¦q==(10*c+a)*(10*b+d) ¦ ¦q==(10*c+a)*(10*d+b) ¦ ¦
q==(10*a+d)*(10*b+c) ¦ ¦q==(10*a+d)*(10*c+b) ¦ ¦q==(10*d+a)*(10*b+c) ¦ ¦q==(10*d+a)*(10*c+b))
System.out.println(q);
}
}
}
public class Test {
public static void main(String[] args){
int i,j;
for(i=10;i<100;i++){
for(j=10;j<100;j++){
int n = i*j;
int n1 = n/1000;
int n2 = n%1000/100;
int n3 = n%1000%100/10;
int n4 = n%1000%100%10;
int i1 = i/10;
int i2 = i%10;
int j1 = j/10;
int j2 = j%10;
if(j2==0&&i2==0){
continue;
}
int [] na = {n1,n2,n3,n4};
int [] nb = {i1,i2,j1,j2};
for(int r=0;r<4;r++){
for(int t=0;t<3;t++){
if(na[t]<na[t+1]){
int nt = na[t];
na[t] = na[t+1];
na[t+1] = nt;
}
if(nb[t]<nb[t+1]){
int nr = nb[t];
nb[t] = nb[t+1];
nb[t+1] = nr;
}
}
}
if(na[0]==nb[0]&&na[1]==nb[1]&&na[2]==nb[2]&&na[3]==nb[3]){
System.out.println(n+"="+i+"*"+j);
}
}
}
}
}
class BloodGost
{
private static void getBloodGostNumber(int number)
{
String strnum = "" + number;
int [] subnum = new int[4];
for (int t = 0;t < 4 ;t++ )
{
subnum[t] = Integer.parseInt(strnum.substring(t,t+1));
}
boolean mark = false;
for (int i = 0;i < 4 ;i++ )
{
for (int j = 0;j < 4 ;j++ )
{
if (i!=j)
{
for (int n = 0;n < 4 ;n++ )
{
if (i!=n&&j!=n)
{
for (int m = 0;m < 4 ;m++ )
{
if (i!=m&&j!=m&&n!=m)
{
mark = PrintBloodGostNumber(number,10*subnum[i]+subnum[j],10*subnum[n]+subnum[m]);
if (mark)
{
break;
}
}
}
if (mark)
{
break;
}
}
}
if (mark)
{
break;
}
}
}
if (mark)
{
break;
}
}
}
private static boolean PrintBloodGostNumber(int number,int num1,int num2)
{
if (number == num1 * num2)
{
System.out.println(num1 + " * " + num2 + " = " + number);
}
return (number == num1 * num2);
}
public static void main(String[] args)
{
for (int i = 1000;i < 9999 ;i++ )
{
getBloodGostNumber(i);
}
}
}
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+"组吸血鬼数");
}