2016第七カップCブルーブリッジ港式(完全配列)

>>タイトル

 

 

この式においてA〜Iは、異なる文字が異なる数を表す1~9の数を表します。

例:
6 + 8/3 + 714分の952は、溶液の一種で
5 + 3/1 + 486分の972は、別の解決策です。

この式ソリューションのどのように多くの種類の合計?

注:あなたが提出しなければならない整数であり、余分なコンテンツや説明のテキストを記入しないでください。

>>アイデア

完全な配列を整列しつつ、第1条件が満たされているかどうかを確認する式に生成されたコードを生成します。

>>コード

1の#include <ビット/ STDC ++ H> 
 2  使用して 名前空間STDを、
3  INT [] = { 123456789 }。
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 [] = { 123456789 }。
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 }

 

おすすめ

転載: www.cnblogs.com/taiga/p/12638419.html