瀋陽のネットワークゲーム2019icpc

Jタイトル:   

質問の意味:あなたの不確実なサイズnのビューを提供し、この数字不確実度と各点のうちの1であるために。そして、このマップの機能は確かにオイラーの数で構成されています。再帰式を得ることができ、nは!

その後、機能があり、それを見てください。これは、各点は、xは、自分の脇に戻すことができるよりも何よりもしないことを要求しなければなりません。(N <= 2 * X <2E9)  

私たちは確かにのみこの条件は、そう考えるのは運命にすることができる(N <= 2 * X <2E9)として、それは条件が削除された満たしていない場合、負の側面から考えることができます。

なぜなら、P(M)= Cを(M、N)*(M-1)!*(NM)!/ N!= 1 / Mの各確率があるために1 / I(X iは= N <<)

何をすることができます前処理、ここでは、コードは次のようになります。

1の#include <cstdioを>
 2の#include <CStringの>
 3の#include <cmath>
 4の#include <ビットセット>
 5の#include <iostreamの>
 6の#include <アルゴリズム>
 7のtypedef 長い LL。
8  使用して 名前空間はstdを、
9  CONST LL MOD =(LL)(1E9 + 7 )。
10  のconst  int型 MAXN =(INT)(1E6 + 10 )。
11  LL和[MAXN]。
12  int型のT;
13  LLのX、N。
14  
15 {(LLのB LL)fast_pow LL
 16件     のLLのRES = 1 17     一方、(B){
 18         場合(Bの%2 == 1)のRES =(RES * A)%MOD。
19         A =(* A)%MOD。
20         、B = B / 2 21     }
 22の    リターンRES。
23  }
 24  
25  ボイドのinit(){
 26      合計は[ 0 ] = 0 27      のために(LL i = 1 ; iは<MAXN; iは++ ){
 28          和[i]は=(和[1-1 ] + fast_pow(I、mod- 2))%MOD。
29      }
 30  }
 31  
32  
33  
34  INT メイン(){
 35      のinit();
36      のscanf(" %dの"、&T)。
37      一方(t-- ){
 38          のscanf(" %のLLDの%のLLD "、&​​N、&x)は、
39          であれば(X> = N){
 40              のprintf(" 1つの\ n " );
41              続け;
42         } {
 43              LL ANS1 = 1、ANS2 = 1 44              のために(LL I = X + 1 ANS1 =(ANS1 * I)%; iが<= N I ++)はMOD。
45              ANS2 =(ans1-(ANS1×(和[N] -sum [X] + 2 * MOD))%のMOD + 2 * MOD)%MOD。
46              // coutの<< ANS1 <<」「<< ANS2 <<てendl; 
47              のprintf(" %のLLDを\ n "、ANS2 * fast_pow(ANS1、mod- 2)%のMOD)。
48          }
 49      }
 50      リターン 0 51 }
コードの表示

 

おすすめ

転載: www.cnblogs.com/pandaking/p/11520485.html