問題の説明
そこ財のn個の種類があり、各項目の番号を知っています。M選択した項目、そこからの置換の必要数。例えば、そこに2つの項目がA、Bがあり、その数は「AB」、「BA」二種類に配置されている選択項目から1、2です。
入力
各グループは、2本のデータ入力ラインを有し、最初の行は二つの数字であるN、M(1 <= M、N <= 10)、アイテムの数を示し、2行目の数を有するN、アイテムの数を示します。
出力
データ出力装置に対応する番号。(任意の動作が2 ^ 31を超えません)
サンプル入力
2 2 1 1
サンプル出力
2
参考文献:指数生成機能、生成機能(生成機能)の詳細--- TankyWoo
次のように最終的なACコードがあります:
#include <ビット/ STDC ++ H> 使用して 名前空間STDを、 INT のmain(){ int型 I、J、K、N、M、NUM [ 12 ]、FAC [ 12 ]。 ダブル A [ 12 ]、B [ 12 ]。 FAC [ 0 ] = 1 ; ための式(I = 1、I < 12 ; I ++)FAC [i]は= FAC [I- 1 ] * I。// 阶乘 一方(〜のscanf(" %D%D "、&N、&M)){ memsetの(0、はsizeof ())。 のmemset(B、 0、はsizeof (B)) のための(iは= 1を scanfの(; I <= N-I ++)" %のD "、&NUM [I]); //は、iが1から始まる場合覚え // 初期化A []最初の(...)を表し、Xおよびインデックスiのi番目の項目である ため(私は= 0 ; I <NUM = [ 1 ]; I ++)[I] = 1.0 / FAC [I ]; // iは(...)項目が大きいアイテム、すなわち、いくつかの最初の乗算表す乗算演算 のための(iは= 2 ; I <= N I ++ ){ ため(J = 0 ; J <= M ; J ++){ // 係数の<= Mアイテムの各関係のみパワー //i番目(.....)Jを乗算+ K <= M 初期回避計数結果のパワーを終了mの係数用語よりも高い ため(K = 0 ; K <= NUM [I] && J + K <= M、K ++)B [J + K] + = A [J] / FAC [K]; } ため(J = 0 ; J <= N; J ++ ){ A [J] = B [J]; // A []現在の結果を保存 B [J] = 0 ; // B []は、次のバッファとして初期化される } } のprintf(" %.0f \ N- "、A [M] * FAC [M]); } 戻り 0 。 }