레어 번호 && prufer 순서 && BSGS 물 타이틀 세트

의 구덩이 BSGS에 대한 첫 번째 이야기 :

식 ^ x≡B MOD (P) 용액

특별 판사 물건이 필요 =>를 % 포인트 ==의 B % 포인트 == 0?

그들은 다음 풋 ( "1")와 그 반대의 경우도 마찬가지 해결책 동일한 경우.

%의 p = 0, 다음 항목이 잘못된 BSGS 알고리즘의 결과로 이동할 수없는 경우로 인해

주제 속으로 :

커틀러 다수 (C (2 * N, N) / (N + 1))을 케이스 (1)의 시퀀스 번호 0>에서 임의의 위치를 ​​처리 01. .

그러나이 중요하다, 정의는 쓸모가 알고있는 테이블에 충돌 법을 찾을 수 있습니다.

next_permutation, 검색 및 기타 도구를 찾는 여러 좋은.

처음 몇 레어 번호 기억 : 1251442132429합니다. (어쨌든, 당신은 단지 이러한 항목을 찾을 수 있습니다)

찾기위한 방법으로 가장 간단하고, 계수의 첫 번째는 루카스, 모듈하지 높은 정밀도를 사용할 수 있습니다.

다른 고정밀처럼 동물 뿐만 아니라 높은 정밀도를 공격, 품질 요소의 분해를 좋아하지 않아, 데이터는 작은 O (N ^ 2) 열거 할 수있다.

소인수로 코드에 대해 게시 됨 :

1 #INCLUDE <cstdio>
 2 #INCLUDE <iostream>
 3  사용  스페이스 성병;
4  #DEFINE MAXN 4,000,005
 5  INT 프라임 [MAXN, TOT, N, frpr [MAXN] FENZI [MAXN, tot1;
(6)  보이드 프리 ()
 7  {
 8       ( int로 I = 2 ; 나는 = < 2 * N; ++ i가 )
 9      {
 10          의 경우 (! frpr [I])
 11          {
 12              frpr [I] = I;
13              프라임 [++ TOT = I;
(14)         }
 15           ( INT J = 1 ; J <= TOT, J ++ )
 16          {
 17 일              경우 (프라임 [J] * I> 2 * N) 체류 ;
18              frpr [프라임 [J] * I = 프라임 [J]
19              의 경우 ((I %의 프라임 [J])!) 파괴 ;
20          }
 21      }
 22      ;
23  }
 24  무효 Get_pr ( INT의 X, INT의 최적화)
 25  {
 26 일      동안 (X! = 1)
 27      {
 28 일          경우 (최적화 된 == 0 ) FENZI [frpr [X] ++ ;
29          다른 FENZI [frpr의 [X] - ;
30          X / = frpr [X];
31      }
 32      ;
33  }
 34  INT 의 main ()
 35  {
 36      INT의 P, ANS = 1 ;
37      는 scanf ( " %의 D % d에 " , 및 N, P);
38      사전 ();
(39)      에 대한이 ( int로 I = N + 2 , I <= 2* N, I는 Get_pr (I) + + 0 );
(40)      에 대한이 ( int로 I = 1 Get_pr (I 내가 ++; i가 N = <) 1 );
(41)      에 대한이 ( int로 I = 1 ; I <= TOT; 내가 ++ )
 42      {
 43          동안 (FENZI [프라임 [내가]> 0 )
 44          {
 45              ANS = 1ll * ANS * 프라임 [I] %의 P를;
46              FENZI [프라임 [I] - ;
47          }
 48      }
 49      COUT << ANS << ENDL;
50      반환  0 ;
51 }
코드보기

두 prufer 순서

N은 N 2 노드 별 포인트 기준은 트리 prufer 시퀀스를 입증 할 수 있고, 대응하는 트리가 고유하게 결정된다 나타낸다.

우리는 몇 가지 이유를 얻을 수 있습니다 :

1. N UNROOTED 트리를 구성하는 도트의 수 : N ^ (N-2)

2. 각각 D1을 차수 N 포인트를 결정 D2 ... 나무 뿌리 개수 (N-2) / ((d1-1) * (d2-1)! * ...)!

3. N 점 뿌리 트리 참조 번호를 가지고 N * ^ N (N-2) ^ N = (N-1)

4. 모든 노드의 정도와 N * 2-2

나무의 수, 다른 어떤 계산뿐만 아니라. . . 그것은 결여 ( 들어는 폭력 열거를 최적화)

 

추천

출처www.cnblogs.com/hzoi-kx/p/11222748.html