第七届蓝桥杯省赛JAVA B组第3题

凑算式


     B      DEF
A + --- + ------- = 10
     C      GHI
     
(如果显示有问题,可以参见【图1.jpg】)
 
 
这个算式中A~I代表1~9的数字,不同的字母代表不同的数字。


比如:
6+8/3+952/714 就是一种解法,
5+3/1+972/486 是另一种解法。


这个算式一共有多少种解法?


注意:你提交应该是个整数,不要填写任何多余的内容或说明性文字。

答案为:29

这道题用暴力的方法就可以了,对一到九进行全排列,然后计算一下等式是不是等于10就好了。

import java.util.Scanner;

public class Main2 {
	public static void main(String[] args){
		int a=1,b=1,c=1,d=1,e=1,f=1,g=1,h=1,i=1;
		int count=0;
		int[] flag=new int[10];
		for(int m=0;m<10;m++){
			flag[m]=-1;
		}
		for(a=1;a<=9;a++){
			if(flag[a]==-1){
			flag[a]=1;
			for(b=1;b<=9;b++){
				if(flag[b]==-1){
					flag[b]=1;
					for(c=1;c<=9;c++){
						if(flag[c]==-1){
							flag[c]=1;
							for(d=1;d<=9;d++){
								if(flag[d]==-1){
								flag[d]=1;
								for(e=1;e<=9;e++){
										if(flag[e]==-1){
											flag[e]=1;
											for(f=1;f<=9;f++){
												if(flag[f]==-1){
													flag[f]=1;
													for(g=1;g<=9;g++){
														if(flag[g]==-1){
															flag[g]=1;
															for(h=1;h<=9;h++){
																if(flag[h]==-1){
																	flag[h]=1;
																	for(i=1;i<=9;i++){
																		if(flag[i]==-1){
																			float num=(float) 1.0;
																			num=a+((float)b)/c+((float)(d*100+e*10+f))/(g*100+h*10+i);
																			if(num==10){
																				count++;
																				System.out.println(count);
																				System.out.println(a+" "+b+" "+c+" "+d+" "+e+" "+f+" "+g+" "+h+" "+i);
																			}
																		}
																		
																	}
																	flag[h]=-1;
																}
																
															}
															flag[g]=-1;
														}
														
													}
													
													flag[f]=-1;
												}
												
											}
											flag[e]=-1;
										}
										
									}
								flag[d]=-1;
								}
								
						}
						flag[c]=-1;
						
						
					}
				}
				flag[b]=-1;
				}
			}
		flag[a]=-1;
		}
		}
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值