トピックポータル
問題解決のアイデア:
すべての大きな出力缶の数年の数を取ることができ、各点を有するベクター、および小(N、M)を維持します。
ベクトルのコレクションを確保するために、現在のK点を手放すされていない(i、j)を、維持するために、ブールFF [J] [k]を使用することで、または意志MLE(プレス次元でも)
ACコード:
1の#include <iostreamの> 2の#include <cstdioを> 3の#include <ベクトル> 4の#include <CStringの> 5 6 使用して 名前空間STDを、 7 8 整数 N、M、K、[ 101 ] [ 101 ]、ANS、今。 9ベクトル< INT > S [ 2 ] [ 101 ]。 10 BOOL VIS [ 101 ]、FF [ 101 ] [ 101 ]。 11 12 INT メイン(){ 13 のscanf(" %D%D%D "、&N、&M、およびK); 14 のために(INT iは= 1 ; iが<= N; I ++ ) 15 のための(INT J = 1 ; J <= Mであり、j ++ ) 16 のscanf(" %dの"、および[I] [J])。 17の S [ 1 ] [ 1 ] .push_back([ 1 ] [ 1 ])。 18 のために(INT iは= 1 ; iが<= N; I ++、今^ = 1 ) 19 のための(INT J = 1; J <= M。J ++ ){ 20 のために(INT P = 1 ; p <= S [今^ 1 ] [J] .size(); P ++ ){ 21 INT U = A [i]は[J] * S [今^ 1 ] [ J] [P- 1 ]%、K。 22 であれば(!FF [J] [U]){ 23の S [今] [J] .push_back(U)。 24個の FF [J] [U] = 1 。 25 } 26 } 27の S [今^ 1 ] [J] .clear(); 28 のための(int型のp =1 ; p <= S [今] [J- 1 ] .size()。P ++ ){ 29 INT U = A [i]は[J] * S [今] [J- 1 ] [P- 1 ]%のK。 30 であれば(!FF [J] [U]){ 31の S [今] [J] .push_back(U)。 32個の FF [J] [U] = 1 。 33 } 34 } 35 のmemset(FF、0、はsizeof (FF))。 36 } 37 のために(INT iが= 1 ; iが<= S [今^ 1] [M] .size()。I ++ ) 38 であれば(VIS [S [今^ 1 ] [M] [I- 1 ]%K] == 0 ) 39 VIS [S [今^ 1 ] [M] [I- 1 ]%K] = 1、++ ANS ; 40 のprintf(" %dの\ n " 、ANS)。 41 のために(INT iは= 0 ; iが<= K; I ++ ) 42 であれば(VIS [I]) 43 のprintf(" %dの" 、I)。 44 リターン 0 ; 45 }