软件大赛题目---第一个题目- 赛软件 * 比赛 = 软件比拼

题目是别人的,我转抄过来的,不记得是谁的了。


第一个题目

 (编程题)下列乘法算式中:每个汉字代表1个数字(1~9)。相同的汉字代表相同的数字,不同的汉字代表不同的数字。
 
    赛软件 * 比赛  =  软件比拼
 
试编程确定使得整个算式成立的数字组合,如有多种情况,请给出所有可能的答案。
 
【参考结果】
465 * 14 = 6510
 

下面贴出我自己和别人的代码:


package com.cs.games;

/**
 * 
全国软件大赛的题目貌似很难。今天费了两个多小时才做出来两个题目,悲催啊,感觉自己的水平真的不咋的啊,唉,
自信心严重的受打击,哈哈,好吧,慢慢练练吧,唉,悲催的我呀,
下面放上第一个题目
 (编程题)下列乘法算式中:每个汉字代表1个数字(1~9)。相同的汉字代表相同的数字,不同的汉字代表不同的数字。
 
    赛软件 * 比赛  =  软件比拼
 
试编程确定使得整个算式成立的数字组合,如有多种情况,请给出所有可能的答案。
 
【参考结果】
465 * 14 = 6510
 *
 *总共有软件赛比拼5个字,前面3个,中间2个,结果是4个
 * a,b,c,d,e
 * [1-9]
 * eab * dc = abde
 * 
 * a=1,b=2-9,c=
 * 
 * 应该这样考虑:
 * 前面是3位数(a),肯定是从123,到987
 * 中间是2位数(b),肯定是从12,到98
 * 相乘的积(c),有a/100==b%10,(a%100)/10==c/1000,a%10=(c%1000)/100,b/10=(c%100)/10
 * a%100=软件,软件/10=软
 */
public class GameOne {
	public static void main(String[] args) {
		//这种循环能找到数据,但是如果“拼”字不是0,就没有数字了
		for(int sai=0;sai<=9;sai++){
			for(int ruan=0;ruan<=9;ruan++){
				for(int jian=0;jian<=9;jian++){
					for(int bi=0;bi<=9;bi++){
						for(int pin=0;pin<=9;pin++){
							if(sai!=ruan && sai!=jian && sai!=bi && sai!=pin
									&&ruan!=jian && ruan!=bi && ruan!=pin
									&&jian!=bi && jian!=pin
									&&bi!=pin){
								int x = Integer.parseInt(sai+""+ruan+""+jian);
								int y = Integer.parseInt(bi+""+sai);
								int z = Integer.parseInt(ruan+""+jian+""+bi+""+pin);
								//System.out.println(x+" * "+y+"="+z);
								if(x * y == z){
								System.out.println(sai+""+ruan+""+jian+"*"+bi+""+sai+"="+ruan+""+jian+""+bi+""+pin);
								}
							}
						}
					}
				}
			}
		}
		//下面这个是别人写的,a应该从123开始,b应该从12开始吧,因为“赛软件”完全不一样,而且说了是1到9的数字,不可能是101啊,最小也是123,b同理
		for(int a=101;a<=987;a++){
			for(int b=10;b<=98;b++){
				int x = a*b;
				//System.out.println(a+"*"+b+"="+x);
				if(x<9876 &&(a/100==b%10) && (x/1000 == (a%100)/10) && (a%10==(x%1000)/100) && b/10==(x%100)/10){
					System.out.println(a+"*"+b+"="+x);
				}
			}
		}
	}
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值