>>タイトル
この式においてA〜Iは、異なる文字が異なる数を表す1~9の数を表します。
例:
6 + 8/3 + 714分の952は、溶液の一種で
5 + 3/1 + 486分の972は、別の解決策です。
この式ソリューションのどのように多くの種類の合計?
注:あなたが提出しなければならない整数であり、余分なコンテンツや説明のテキストを記入しないでください。
>>アイデア
完全な配列を整列しつつ、第1条件が満たされているかどうかを確認する式に生成されたコードを生成します。
>>コード
1の#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 INT [] = { 1、2、3、4、5、6、7、8、9 }。 4 INT ANS = 0 。 5 ブールチェック(){ 6 INT X = [ 3 ] * 100 + [ 4 ] * 10 + [ 5 ]。 7 int型、Y = [ 6 ] * 100+ [ 7 ] * 10 + [ 8 ]。 8 もし(([ 0 ] +([ 1 ] * Y + X * [ 2 ])/(Y * [ 2 ]))== 10 && (([1] * Y + X * A [2])%(Y * [2])== 0) )を返す 真。 9 リターン はfalse ; 10 } 11 12 空隙 F(INT K){ 13 であれば(K == 9 ){ 14 であれば(チェック())ANS ++ 。 15 } 16 のために(int型私は、K =; I < 9 ; I ++ ){ 17 { int型 T = A [i]は、[I] = [K]、[K] = T;} 18 F(K + 1 )。 19 { INT T = A [i]は、[I] = [K]、[K] = T;} 20 } 21 } 22 INT メイン(){ 23 F(0 )。 24 COUT << ANS。 25 }
①(([1] * Y + X * [2])%(Y * [2])== 0) ミス状態に非常に簡単であり、整数演算、または4つの整数の結果は、原因となります= 10 + 9.3この問題が発生し、分割部分は割り切れできることを確認してください。
②も使用next_permutation、以下のコードであってもよいです。
1の#include <ビット/ STDC ++ H> 2 使用して 名前空間STDを、 3 INT [] = { 1、2、3、4、5、6、7、8、9 }。 4 INT ANS = 0 。 5 ブールチェック(){ 6 INT X = [ 3 ] * 100 + [ 4 ] * 10 + [ 5 ]。 7 int型、Y = [ 6 ] * 100+ [ 7 ] * 10 + [ 8 ]。 8 もし(([ 0 ] +([ 1 ] * Y + X * [ 2 ])/(Y * [ 2 ]))== 10 &&(([ 1 ] * Y + X * A [ 2 ])%(Y * [ 2 ])== 0))を返す 真。 9 リターン はfalse ; 10 } 11 12 INT メイン(){ 13 行う{ 14 であれば(チェック())ANS ++ 。 15 } 、一方(next_permutation(+ 9 ))。 16 COUT << ANS。 17 }