蓝桥杯模拟赛-猜算式

来源:互联网 发布:淘宝预约快递上门取件 编辑:程序博客网 时间:2024/06/01 09:18
题目:猜算式

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

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 stubint 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 stubif (num==20) {judge(a);return;}/* 0 1 2 * 3 4 5 * ---------- * 6 7 8 *   9 10 11 *   1213 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 stubint 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