溶液
タプル$(i、j)は$はサイクルセクションの数、サイクル数を表します。(等価クラスKと固定容量クラスと呼ばれる数学の組み合わせ?)
一定の交換:$ 1 *(1,12)$
重心+ $ 90:3 *(4,3)$
面心$ -90:3 *(4,3)$
$重心180:3 *(2,6)$
对棱$180:6*[(2,5)+(1,2)]$
体心$120:4*(3,4)$
体心$240:4*(3,4)$
その後、残りの問題は、これらの等価クラスの内部の色を記入する方法であります
みなさ差別カラーボール、ボックスと考え等価クラスで違いはありません、組合せ問題
/ * タプル(i、j)がセクションのサイクル数、サイクル数、固定容量型K等価クラスと呼ばれる数学の組み合わせ表す 1 *(1、12):一定の変位 面心+ 90:3 *(4,3) の面心-90:3 *(4,3) 面180を中心:3 *(2,6) 6 *の[(2,5)+(1,2)]:リブ180の 中心体を120:4 *(3,4) 体心240:4 *(3,4) * / の#include <アルゴリズム> の#include <CCTYPE> の#include <cmath> の#include <cstdioを> する#include <cstdlib> する#include < CString> の#include <iostreamの> の#include <地図> 書式#include <キュー> の#include < SET > 書式#include <スタック> の#if__cplusplus> = 201103L の#include <unordered_map> 書式#include <unordered_set> #endifの 書式#include <ベクトル> の#define LSONのRT << 1、L、ミッド の#define rsonのRT << 1 | 1、中間+ 1、R の#define LONG_LONG_MAX 9223372036854775807LL の#define LL LL 使用 名前空間STD。 typedefの長い 長いLL。 typedefの長い ダブルLD; typedefの符号なしの長い 長いULL。 typedefのペア < int型、int型 > P; int型N、M、K。 const int型 MAXN = 1E5 + 10 。 INT [ 7 ]、B [ 7 ]。 インラインLLのFAC(LL n)で { LL RES = 1 。 用(int型 I = 2 ; iが<= N; iが++ ) RES * = I。 リターンのres; } インラインのLL C(LL N、LLのM) { 場合(N < M) 戻り 0 ; 戻り FAC(N)/(FAC(M)* FAC(N - M))。 } インラインのLLのdoIt(INTK) { のmemcpy(B、、はsizeof A)。 int型のグループ= 0 ; 以下のために(int型 i = 1 ; iは= < 6 ; iは++ ) { 場合(B [i]の%のK) 戻り 0 ; // 不能完全以K划分 B [I] / = K。 グループ + = B [i]は、 } LL RES = 1 。 以下のために(int型 i = 1 ; iは= < 6 ; iが++ ) { RESを* = C(群、B [I])。 グループ - =のB [i]は、 } 戻りRESと、 } インラインLL(解決) { LL RES = 0 。 RES + =のdoIt(1)。 // 不动置换 RES + = 2 * 3 *のdoIt(4)。// 面心+ 90、-90 RES + = 3 *のdoIt(2)。 // 面心180 のための(int型 i = 1 ; iが= < 6 ; iが++ ) のため(INT J = 1 ; J <= 6 ; J ++ ) { もし、((I == J && [I] < 2)||(I = J &&([I] ||!!![J] ))) 続けます。 [I] - 、[J] - 。 RES + = 6 *のdoIt(2)。// 对棱180 [i]を++、[J] ++ ; } RES + = 2 * 4 *のdoIt(3)。// 体心+ 120、-120 戻り RES /。24 } int型のmain(int型 ARGC、チャー CONST * ARGV []) { #ifndefのONLINE_JUDGE freopenは(" in.txt "、" R " 、STDIN)。 freopenは(" out.txtを"、" W " 、STDOUT)。 #endifの IOS :: sync_with_stdio(偽); cin.tie(0 )。 cout.tie(0 )。 int型のトン。 cinを >> トン。 しばらく(t-- ) { memsetの(0、はsizeof A)。 以下のために(int型 i = 0 ; iは< 12 ; iは++ ) { int型のxと、 cinを >> X; [X] ++ ; } COUT <<()<<解決する" \ nを" 。 } 戻り 0 。 }