Wannafly挑戰賽25 C 期望運算元

2021-08-28 15:56:07 字數 1696 閱讀 6566

nqijij 有乙個數x,和乙個神秘權值 q, 滿足 x <= q, 每一次nqijij會隨機x 變成 [x, q] 中的乙個隨機數,nqijij想要知道期望多少次操作之後x 變為q。

由於nqijij 是乙個精力充沛的人,所以他總共會選擇 t 次x 和q 進行操作,對於每一次操作,你需要輸出期望多少次操作之後x 變為q 在 998244353 模意義下的值。

(令 ans = x / y, x, y 為正整數且 題目保證 x、y 與998244353 互質,則輸出x * (y^(-1)), (y^(-1)) 表示y在998244353下的乘法逆元,可以證明這樣的逆元存在)

題目保證 t <= 1e6, q <= 1e7, x <= 1e7;

第一行乙個數t

接下來t行

每行兩個整數 x, q (x <= q)

輸出t行

第 i 行的正整數 表示第i次詢問的答案。

示例1複製

2

7 815 18

複製

2

831870297

對於第乙個樣例

每一次有0.5的概率結束利用簡單的求和可知是2.

遞推求逆元模板

//求逆元,當n特別大時,效果特別好

//begin

ll inv[n];

inline void get_inv()

}//end

對於這種無限次的選擇,自己就會很懵逼,其實直接求確實是不存在,但是我們可以

1.找到狀態表示,找到遞推式

2.給定初始值

然後我們推一下就好了,基本上都是很簡單的,不要恐懼

這道題,我們可以考慮,有用的就是兩個人之間的差值。

所以我們假設 結尾在q,

那麼我可以在

1, 用 f[1] 表示從1點到 n點的期望步數,

可以得到

在2的時候,可以得到

在其他點同理。 然後倒著退回來就好了。

可能那個1比較難理解,我們可以換個角度,如果我們想去q的話,是可以1步直接到的. 要考慮特殊點,特殊值,要不然,沒有出口了,遞迴不能終止了。

#includeusing namespace std;

typedef long long ll;

#define rep(i,a,b) for(int i=a;i=a;--i)

#define clk clock()

const int mod=998244353;

const int n=1e7+10;

ll f[n];

ll inv_mod(ll base,int n)

return ans%mod;

}//求逆元,當n特別大時,效果特別好

//begin

ll inv[n];

inline void get_inv()

}//end

int main()

//double t2=clk;

//printf("%.2f\n",(t2-t1)/clocks_per_sec);

int t;

scanf("%d",&t);

while(t--) else

}return 0;

}

Wannafly挑戰賽25 A 因子

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 令 x n 給定一大於1的正整數p 求乙個k使得 p k x 並且 p k 1 不是x的因子。兩個數n,p 1e18 n 10000 p 2 乙個數 表示k示例1 ...

Wannafly挑戰賽25 因子 數論

一 題意 令 x n 給定一大於1的正整數p 求乙個k使得 p k x 並且 p k 1 不是x的因子 輸入為兩個數n,p 1e18 n 10000 p 2 二 分析 2.1前置知識 階乘質因數分解 定理 在n!的標準分解式中,質因數p的指數h為 h left right left right su...

Wannafly挑戰賽25A 質因子分解

階乘因子分解,找出n 中有多少個p ll findnum ll n,ll p return ans include include include include include using namespace std typedef long long ll 篩出p的最小質數和個數,再用快速演算法...