2019年8月のトレーニング(II)

今日の試験、チートポイントチートポイント。

T3はBZOJ上の3823のようなビットです

原題:

Dingqingxinwu(bzoj 3823 
説明
も刻までもサンセイ石がE.の少額に属し、プログラマは妹を見つけることができないことを言うが、誰も知らない 

その日、小さなEは、彼の人生の節約、姉妹愛の贈り物珍しいトークンを使い果たし。それは少しだった

小さな立方体、それによって、あなたが過去には、秘密Dongcheできる見ることができます。

深い目かのように、この形見。それは一見シンプルな外観を通して見ているときに、しかし心の奥底では、ほとんどのある

人間の魂をタップ。予想通り、姉とそれが宇宙を越えて、この記念の美しさに惹かれました。

「かんたん太極拳は、二つの外見、健康4枚、4枚と生ゴシップの2つの出現である。、善と悪ゴシップ、良い面と悪い学生に大義を設定してください。」

モットーは、その上に完璧な解釈となっています。

はい、これはハイパーキューブです。

小Eは、この形見のように深い愛情も、姉に語りました。今、妹が知りたいと思った、小さなEのための彼女の愛

の意味をどのような

私たちはラインにジョギングを知っているが、表面にラインの動きは、大人の表面移動は......それはn次元超立方体は、nで見ることができています - 1 次元の超

得られた全方向リブ翻訳におけるその三次元パターンに直交するキューブ方向。

私たちは次のように考え指すことができます0次元のハイパーキューブ、それはストレートと見られる1次元のハイパーキューブ、正方形はと見られる2 次元のスーパー

ように立方体......と。

任意のn次元超立方体(N >0)低次元超立方体の要素である:そのN 。1 次元の表面が

N-である - 。1次元ハイパーキューブ、それは、N- 2であるN-次元エッジ2ば、次元ハイパーキューブをN- 3次元要素は、N-ある3 次元

ハイパーキューブが...... 

少しEは、愛の--K次元超立方体の妹のトークンの愛情での各次元の要素が含ま

数を。要素の数が多い可能性があるので、唯一それが含む要素およびモジュロP XORの数の各寸法を出力します。

 

入力
二つの整数K、P、説明のタイトルを参照してください。

 

 

出力
Dingqingxinwu Eの各次元の要素を表す非負整数モジュロPとXORの小さな数を含んでいました。なお、

排他的および以上P.ことがあります意味 

 

 

入力サンプル
INPUT 。1 
。3  。7 

入力2 

。4  2333 

入力3 

12は、 7723 
サンプル出力
出力1 

。3

出力2 

33である

出力3。

360 

ヒント
解釈サンプル2:
を含む三次元ハイパーキューブ。8 0次元要素、12は一次元要素6の二次元要素、三次元
要素、金型7のそれぞれの後1561、排他的論理和である1 ^ 5 ^ 6 ^ 1 = 3
コードの表示
超検討「対角線」の各n次元立方体のk次元の要素は、k次元のn次元ベクトルから選択され、各寸法が+1または-1であり、答えはC(N、K)* 2 ^ K 、逆元をすることができる後プレO(N)。
しかし、は、p <nは、それが必要な場合があります(のb * p)とすることが^( - 1)、 これは現在のメンテナンスのCNT Pことを、いくつかの答えがありますので、全く逆ではありませんが、また注意逆を支払うREV [tmpには%pです]。
コード
 
 
書式#include <cstdioを> 
する#include <iostreamの>

に#define LL長い長いです
#define N 10000010
 使って 名前空間はstdを、
INTのN、P、経度INV [N]。 ボイドgetinv() { int型(N、P T =分1 )。 INV [ 1 ] = 1 以下のためにint型 iは= 2 ; I <= T iは++ INV [i]は =装置INV [P%のI] *(PP / I)%のP。 }
のLL poww(経度A、
int型B) { LL ANS = 1 一方、(b)は、 { もし、(B&1)ANS = ANS *%のP。= *%のP、B >> = 1 } 戻り ANS%のPと、 }
int型のmain() { scanf関数(" %D%dの"、&​​N&P)。 もし(Pの== 2 { のprintf(" 1つの\ n " ); リターン 0 ; } getinv()。 LL ANS = poww(2 、n)は、   LL和 =のANS、CNT = 0 int型 iは= 1 iが<= N; iが++ int型 { TMP = N-I + 1 一方、(TMP%以下Pは== 0 { CNT ++ TMP / = P。 } ANS = ANS * TMP%のP。 TMP = I; 一方、(TMP%以下Pは== 0     { CNT -     TMP / = P。     } ANS = ANS * INV [TMP%P]%のP。 ANSは =のANS * INV [ 2 ]%のP。 合計 ^ = CNT?0 :ANS; } のprintf(" %d個の\ n " 、合計)。 リターン 0 ; }

 

2019年8月2日22時07分〇〇秒

おすすめ

転載: www.cnblogs.com/plzplz/p/11291486.html