今日の試験、チートポイントチートポイント。。。
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のそれぞれの後1、5、6、1、排他的論理和である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分〇〇秒