蓝桥杯模拟赛-猜算式

题目:猜算式

你一定还记得小学学习过的乘法计算过程,比如:

273
x 15
------
1365
273
------
4095

请你观察如下的乘法算式

***
x ***
--------
***
***
***
--------
*****

星号代表某位数字,注意这些星号中,
0~9中的每个数字都恰好用了2次。
(如因字体而产生对齐问题,请参看图p1.jpg)

请写出这个式子最终计算的结果,就是那个5位数是多少?

注意:只需要填写一个整数,不要填写任何多余的内容。比如说明文字。


public class 猜算式 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a[] = new int[20];
		int visit[] = new int[10];
		dfs(a,visit,0);
		
	}

	private static void dfs(int[] a, int[] visit, int num) {
		// TODO Auto-generated method stub
		if (num==20) {
			judge(a);
			return;
		}
		
		
		/* 			0 1 2
		 * 			3 4 5
		 * 		----------
		 * 			6 7 8
		 *  	 9 10 11
		 *   12	13 14
		 *   --------------
		 *   15 16 17 18 19
		 * */
		for (a[num] = 0; a[num] < 10; a[num]++) {
			int up = a[0]*100+a[1]*10+a[2];
			if (num==8&&(a[5]*up!=a[6]*100+a[7]*10+a[8])) {
				continue;
			}
			if (num==11&&(a[4]*up!=a[9]*100+a[10]*10+a[11])) {
				continue;
			}
			if (num==14&&(a[3]*up!=a[12]*100+a[13]*10+a[14])) {
				continue;
			}
			if (num==19&&a[19]!=a[8]) {
				continue;
			}
			if (visit[a[num]]<2) {
				visit[a[num]]++;
				num++;
				dfs(a, visit, num);
				num--;
				visit[a[num]]--;
			}
		}
	}

	private static void judge(int[] a) {
		// TODO Auto-generated method stub
		int up = a[0]*100+a[1]*10+a[2];
		int down = a[3]*100+a[4]*10+a[5];
		int end = a[15]*10000+a[16]*1000+a[17]*100+a[18]*10+a[19];
		if (up*down==end) {
			System.out.println(end);
		}
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

obession

觉得有用可以打赏咖啡一杯~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值