K Random
簡單的概率題,直接能推出公式為\((n - m) / 2\)
但是不能就這樣簡單的去算,加減乘與模運算的順序交換不會影響結果,但是除法不行,這個題目要求對一個大質數取模,原式里面有除法,我們就需要求取除數對于取模數的逆元,然后進行轉化為乘法運算,
這樣我們就需要先求出\(2\)對于\({10}^9+7\)的逆元\(x^{-1}\)(費馬小定理轉化一下,快速冪嗯算就完了)
這樣計算公式為:
點擊查看代碼
#include<bits/stdc++.h>
int mod = 1e9+7;
int main()
{
int t = 1;
std::cin >> t;
int tem = (mod + 1) / 2;
while(t--)
{
int x,y;
std::cin >> x >> y;
std::cout << 1ll * (x-y) * tem % mod <<std::endl;
}
return 0;
}
L Alice and Bob
博弈論
點擊查看代碼
#include<iostream>
const int N = 1e6 + 10;
using namespace std;
int a[N];
int n;
void slove()
{
cin >> n;
for(int i = 0;i <= n;i++)cin >> a[i];
for(int i = n;i > 0;i--)a[i-1] += a[i] / 2;
cout << a[0] << endl;
if(a[0])puts("Alice");
else puts("Bob");
}
int main()
{
int t;
cin >> t;
while(t--)slove();
return 0;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/499768.html
標籤:其他
上一篇:素數演算法(Prime Num Algorithm)
下一篇:網路流,二分圖與圖的匹配
