トピックロス・バレーp1149からの抜粋
Nのマッチ棒君、君は"のような形状数綴ることができますA = B + C 、A + B = C"方程式のか?式A A、B Bは、C (非ゼロの数は、次に最上位ビットがない場合Cは、マッチ棒スペル有する整数であり、0 0)。マッチ棒の数字と戦う0-9 0 - 図9に示すように、スペル。
注意:
-
彼らのニーズと等号2本のマッチ棒プラス
-
もしB≠ A ≠ B、次いでA = B + C 、A + B = CとB = C A + B + A = 異なる式としてC(A、B、C> 0 = A 、B 、C > = 0)
-
N(<= 24)マッチ棒がすべてを費やす必要があります。
この質問は少し無知一見すると、デジタル・アップ保存する必要がありますが、見つけるために必要な数値の範囲内でもつれの配列との最初の試合0-9の数は、一見数字の数百人は、すべての出会いで構成することができますもちろん、これは良いです大きな範囲を見つけることができますが、また分析で、1000年のために必要な一致の数は20で、nは24、最大で、マイナスの一致を必要と4つのシンボル、わずか20ので、私は1000年にオープンしました。
プレイテーブルには、現実的には、ビットの決定ビットに%を取るために引き続き、十分な暴力、プラスダイレクトそれぞれの数はそうするたびに、一見、一致の数をカウントする場所は、各番号は、いくつかのマッチをとる方法であるにもありませんこの数自体は、直接バック6その上、0であるがある場合は、マッチの総数です。
コード
書式#include <iostreamの> の#include <cstdioを> 使用して 名前空間はstdを、 int型のn; INTを L [ 10 ] = { 6、2、5、5、4、5、6、3、7、6 }。 int型ANS; INT NUM(INT X) { int型、A = 0、B = 0 。 もし(x == 0)リターン 6 。 同時に(X) { B = X%10 ; + = L [B]、X / = 10 。 } を返します。 } int型のmain() { CIN >> N。 N - = 4 。 用(int型 iは= 0 ; iが= < 1000 ; ++ i)が ため(INT J = 0 ; J <= 1000年 ; ++ j)は { int型 A = NUM(I)、B = NUM(J)、C = NUM(I + J)。 もし(A + B + C == N)ANS ++。 } printf(" %dの" 、ANS)。 リターン 0 ; }