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

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

    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;
			}
		}

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

输出结果:

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

    原文作者:ftl111
    原文地址: https://blog.csdn.net/ftl111/article/details/79714004
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞