当前位置 : 主页 > 编程语言 > 其它开发 >

2022杭电 中超

来源:互联网 收集:自由互联 发布时间:2022-07-20
K Random 简单的概率题,直接能推出公式为 \((n - m) / 2\) 但是不能就这样简单的去算,加减乘与模运算的顺序交换不会影响结果,但是除法不行。这个题目要求对一个大质数取模,原式里
K Random

简单的概率题,直接能推出公式为\((n - m) / 2\)
但是不能就这样简单的去算,加减乘与模运算的顺序交换不会影响结果,但是除法不行。这个题目要求对一个大质数取模,原式里面有除法,我们就需要求取除数对于取模数的逆元,然后进行转化为乘法运算。
这样我们就需要先求出\(2\)对于\({10}^9+7\)的逆元\(x^{-1}\)(费马小定理转化一下,快速幂嗯算就完了)
这样计算公式为:

\[(n - m)\cdot x^{-1} \pmod {10^{9}+7} \]

点击查看代码
#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;
}
网友评论