2017 6 6測試 題一 火柴

2021-08-06 00:27:32 字數 1865 閱讀 8705

火  柴

提交檔案:match.exe

輸入檔案:match.in

輸出檔案:match.out

問題描述:

圖1

小明在家無聊時會拿火柴去拼數字,每個數字的拼法如圖1所示。有一天小明突發奇想,想出乙個玩法。他把所有火柴分為a,b,c三堆,然後用光每一堆的火柴各拼出乙個數(用a,b,c的火柴拼出的數分別是a,b,c),這三個數都不能有前導0(0本身除外),再選擇乙個運算子op(+,-,*,/,其中/是整數除),使得a op b = c。因為小明只學過0到999的數,所以只能拼0到999這1000個數。

小明玩著玩著想到,對於火柴堆的一種分法,能得到多少個不同的等式呢?你能回答這個問題嗎?

輸入格式:

輸入只有一行,包含三個整數,分別是a,b,c三堆火柴的火柴數。

輸出格式:

輸出只有一行,包含乙個整數,為所求的等式的個數。

輸入樣例:

輸出樣例:

4 5 8

2

資料範圍:

對於所有的資料,2 ≤ a,b,c ≤ 21。

樣例中兩個等式分別是4 + 71 = 75和11 + 5 = 16。

varh:array[0..9] of byte=(6,2,5,5,4,5,6,3,7,6);//慢慢數火柴棍,打表

a,b,c,n,i,j,ans:longint;

function try(n:longint):longint;//拆數(把x位數拆成x個數)

begin

try:=0;

if n=0 then exit(6);//等於0直接出去(0只能在最後)

while n<>0 do

begin

inc(try,h[n mod 10]);//慢慢拆

n:=n div 10;//被拆就要少了

end;

end;

begin

readln(a,b,c);

for i:=0 to 999 do//直接按題目的上限:999

for j:=0 to 999 do

begin

if (try(i)=a) and (try(j)=b) then//相等時

begin

if (i+j<=999) and (try(i+j)=c) then inc(ans);//如果在資料範圍內,滿足加法等式,等式+1

if (i>=j) and (try(i-j)=c) then inc(ans);//如果在資料範圍內(他頂多會0,不會負數),滿足減法等式,等式+1

if (i*j<=999) and (try(i*j)=c) then inc(ans);//滿足懲罰等式

if (j<>0) and (try(i div j)=c) then inc(ans);//滿足處罰等式(不能被0除)

end;

end;

writeln(ans);

end.

php測試題(一)

題目 生日 1994 8 8 結果 22歲 header content type text html charset utf 8 function diffdate date1,date2 list y1,m1,d1 explode date1 把陣列中的值賦給一些變數 list y2,m2,d2...

黑馬基礎測試題(一)

1 從鍵盤接受乙個數字,列印該數字表示的時間,最大單位到天,例如 鍵盤輸入 6,列印6秒 鍵盤輸入 60,列印1分 鍵盤輸入 66,列印1分 6秒 鍵盤輸入 666,列印11分 6秒 鍵盤輸入 3601 列印1小時1 秒2 編寫乙個函式,函式內輸出乙個字串,並在主函式內呼叫它。3 為什麼需要配置 p...

PHP基礎測試題(一)

1.echo,print printf print r var dump sprintf 區別 echo 是乙個語句,其它的是函式,echo可以輸出多個值,效率高。print 只可以輸出乙個值,print 有返回值 正常輸出返回1 riintf 是乙個格式化輸出 d f s print r 輸出陣列...