題解 洛谷1149 火柴棒等式

2021-07-09 22:47:57 字數 1252 閱讀 9849

給你n根火柴棍,你可以拼出多少個形如「a+b=c」的等式?等式中的a、b、c是用火柴棍拼出的整數(若該數非零,則最高位不能是0)。用火柴棍拼數字0-9的拼法如圖所示:

注意:1. 加號與等號各自需要兩根火柴棍

2. 如果a≠b,則a+b=c與b+a=c視為不同的等式(a、b、c>=0)

3. n根火柴棍必須全部用上輸入格式:輸入檔案matches.in共一行,又乙個整數n(n<=24)。

輸出格式:輸出檔案matches.out共一行,表示能拼成的不同等式的數目。

輸入樣例#1:

樣例輸入1:

14樣例輸入2:

18

輸出樣例#1:

樣例輸出1:

2樣例輸出2:

9

【輸入輸出樣例1解釋】

2個等式為0+1=1和1+0=1。

【輸入輸出樣例2解釋】

9個等式為:

0+4=4

0+11=11

1+10=11

2+2=4

2+7=9

4+0=4

7+2=9

10+1=11

11+0=11

強行打表列舉ac,利用類似迭代的方法生成了2000左右的數字所需火柴棒數,然後喜聞樂見地ac了,說明還是資料太弱。

var n,i,j,k,ans:longint;

a:array[0..9]of longint=(6,2,5,5,4,5,6,3,7,6);

b:array[0..2050]of longint;

begin

readln(n);

n:=n-4;

for i:=0 to 9 do

b[i]:=a[i];

for i:=10 to 2000 do

begin

k:=i;

while k>9 do

begin

inc(b[i],a[k mod 10]);

k:=k div 10;

end;

inc(b[i],a[k]);

end;

for i:=0 to 1000 do

for j:=0 to 1000 do

if b[i]+b[j]+b[i+j]=n

then inc(ans);

writeln(ans);

end.

洛谷 1149 火柴棒等式

給你n根火柴棍,你可以拼出多少個形如 a b c 的等式?等式中的a b c是用火柴棍拼出的整數 若該數非零,則最高位不能是0 用火柴棍拼數字0 9的拼法如圖所示 注意 加號與等號各自需要兩根火柴棍 如果a b,則a b c與b a c視為不同的等式 a,b,c 0 nnn根火柴棍必須全部用上 輸入...

洛谷 P1149 火柴棒等式

題目描述 給你n根火柴棍,你可以拼出多少個形如 a b c 的等式?等式中的a b c是用火柴棍拼出的整數 若該數非零,則最高位不能是0 用火柴棍拼數字0 9的拼法如圖所示 注意 加號與等號各自需要兩根火柴棍 如果a b,則a b c與b a c視為不同的等式 a b c 0 n根火柴棍必須全部用上...

洛谷P1149 火柴棒等式

題目 題目描述 給你n根火柴棍,你可以拼出多少個形如 a b ca b c 的等式?等式中的aa bb cc是用火柴棍拼出的整數 若該數非零,則最高位不能是00 用火柴棍拼數字0 90 9的拼法如圖所示 注意 加號與等號各自需要兩根火柴棍 如果a b,則a b c與b a c視為不同的等式 a,b,...