軟體大賽題目---第一個題目- 賽軟體 * 比賽 = 軟體比拼
阿新 • • 發佈:2019-02-06
題目是別人的,我轉抄過來的,不記得是誰的了。
第一個題目
(程式設計題)下列乘法算式中:每個漢字代表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); } } } } }