求解吸血鬼数一(正向求解)

求解吸血鬼数的正向求解思路:

    1.从1000到9999将所有的四位数都遍历一遍

    2.将遍历的数拆分成四个一位数

    3.由四个一位数进行组合,得到每组两个的两位数

    4.两个两位数进行相乘判断乘积是否与未拆分前的数相等



package xiaocheshi.com.ftl;

import java.util.Arrays;

import javax.swing.plaf.basic.BasicInternalFrameTitlePane.MaximizeAction;

public class XiXueGuiShu {

	public static void main(String[] args) {
		
		//正向思维,将一个四位数拆分成两个两位数
		//思路清晰,但输出比较麻烦
		for (int i = 1000; i < 10000; i++) {
			//将四位数按位拆分
			int a=i/1000;
			int b=(i%1000)/100;
			int c=(i%100)/10;
			int d=i%10;
			//将拆分的四位数按位组合成两个两位数
			int m1=a*10+b;
			int m2=c*10+d;
			int m3=a+b*10;
			int m4=c+d*10;
			
			int n1=a*10+c;
			int n2=b*10+d;
			int n3=a+c*10;
			int n4=b+d*10;
			
			int p1=a*10+d;
			int p2=b+c*10;
			int p3=a+d*10;
			int p4=b+c*10;
			
			if (m1*m2==i) {
				if (m1>m2) {
					System.out.println(i+"="+m2+"*"+m1);
				}else {
					System.out.println(i+"="+m1+"*"+m2);
				}
				continue;
			}
			if (m3*m4==i) {
				if (m3>m4) {
					System.out.println(i+"="+m4+"*"+m3);
				}else {
					System.out.println(i+"="+m3+"*"+m4);
				}
				continue;
			}
			if (m1*m4==i) {
				if (m1>m4) {
					System.out.println(i+"="+m4+"*"+m1);
				}else {
					System.out.println(i+"="+m1+"*"+m4);
				}
				continue;
			}
			if (m3*m2==i) {
				if (m3>m2) {
					System.out.println(i+"="+m2+"*"+m3);
				}else {
					System.out.println(i+"="+m3+"*"+m2);
				}
				continue;
			}
			
			if (n1*n2==i) {
				if (n1>n2) {
					System.out.println(i+"="+n2+"*"+n1);
				}else {
					System.out.println(i+"="+n1+"*"+n2);
				}
				continue;
			}
			if (n3*n4==i) {
				if (n3>n4) {
					System.out.println(i+"="+n4+"*"+n3);
				}else {
					System.out.println(i+"="+n3+"*"+n4);
				}
				continue;
			}
			if (n1*n4==i) {
				if (n1>n4) {
					System.out.println(i+"="+n4+"*"+n1);
				}else {
					System.out.println(i+"="+n1+"*"+n4);
				}
				continue;
			}
			if (n3*n2==i) {
				if (n3>n2) {
					System.out.println(i+"="+n2+"*"+n3);
				}else {
					System.out.println(i+"="+n3+"*"+n2);
				}
				continue;
			}
			
			if (p1*p2==i) {
				if (p1>p2) {
					System.out.println(i+"="+p2+"*"+p1);
				}else {
					System.out.println(i+"="+p1+"*"+p2);
				}
				continue;
			}
			if (p3*p4==i) {
				if (p3>p4) {
					System.out.println(i+"="+p4+"*"+p3);
				}else {
					System.out.println(i+"="+p3+"*"+p4);
				}
				continue;
			}
			if (p1*p4==i) {
				if (p1>p4) {
					System.out.println(i+"="+p4+"*"+p1);
				}else {
					System.out.println(i+"="+p1+"*"+p4);
				}
				continue;
			}
			if (p3*p2==i) {
				if (p3>p2) {
					System.out.println(i+"="+p2+"*"+p3);
				}else {
					System.out.println(i+"="+p3+"*"+p2);
				}
				continue;
			}
		}

由于代码的输出部分未合并和整理,显得有些杂乱

输出结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值