NaCly_Fish’s Math Contest 题解
NaCly_Fish’s Math Contest
A.炼金术(Alchemy)
题目描述
铃是一个爱玩游戏的女孩子。
她在游戏中想要炼制一种稀有合金 —— 这需要n 种金属来合成。
她准备好矿石后建造了 k个不同的熔炉,当熔炉启动时,会随机炼出这 n 种金属中的一些(也可能什么都没有)。
如果把每个熔炉炼出的金属收集起来,有了全部 n 种金属,就能造出合金了。澪对此很好奇,对铃说:「我考考你,有多少种情况可以炼出合金呢?」这个简单的问题铃很快就会做了,你能求出结果吗?
答案可能很大,请对 998244353 取模(即除以 998244353 的余数)后输出。
范围限制
1≤n,k≤109。
解法
首先将其看为一个k×n的矩阵,让其每一列上不都为空, 求方案数, 不难得出答案为:
i=0∑n(−1)i(2n−i)k(in)
使用二项式定理将其进一步化简为:
i=0∑n(−1)i(2k)n−i(in)=(2k−1)n
快速幂即可, 时间复杂度O(logn)
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| #include <bits/stdc++.h>
using namespace std;
#define int long long
const int mod = 998244353;
int n, k;
int qpow(int a, int b) { int t = 1; while(b != 0) { if(b & 1)t = t * a % mod; a = a * a % mod; b >>= 1; } return t % mod; }
signed main() { scanf("%lld%lld", &n, &k); printf("%lld", qpow((qpow(2, k) - 1), n)); return 0; }
|
B.生命游戏(GoL)
题目描述
有n个格子排成一个环,每个格子中都有一个状态为 生/死 的细胞。
如果一个格子相邻的活细胞数为1,那么这个格子中的细胞,在下一代会存活(如果是死亡的会复活);否则会死亡。
给定初始状态,请你帮她们快速求出k 代之后的状态。
范围限制
3≤n≤5×105,1≤k<262。
解法
题目背景为Conway’s Game of Life,这个是问题的简易版,其实可以在这里玩一下。
首先题目可以转化为求fi,j=fi−1,j−1⊕fi−1,j+1,然后根据异或的结合律和数学归纳法可以得到,
fi,j=fi−2k,j−2k⊕fi−2k,j+2k
然后就可以解决了,时间复杂度O(nlogk)。
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| #include <bits/stdc++.h>
using namespace std;
#define int long long
const int N = 2e5 + 10;
int n, T;
int f[N], g[N];
signed main() { cin >> n >> T; for(int i = 0; i < n; i++) { char x; cin >> x; f[i] = (x == '1'); } for(int bit = 0; bit <= 62 && T; bit++) { if((T >> bit) & 1) { for(int i = 0; i < n; i++) g[i] = f[((i - (1ll << bit)) % n + n) % n] ^ f[((i + (1ll << bit)) % n + n) % n]; memcpy(f, g, sizeof(g)); T -= (1ll << bit); } } for(int i = 0; i < n; i++) putchar(f[i] + '0'); return 0; }
|
C.黑暗(Darkness)
题目描述
铃在一个黑暗的三维空间内寻找澪。这个空间可以表示为 {(x,y,z)∣x∈[0,A],y∈[0,B],z∈[0,C]}。铃初始站在坐标为 (A,B,C)处,澪站在 (0,0,0) 处。假设铃在 (x,y,z) 处,她每次移动会均匀随机地尝试移动到 (x−1,y,z) 或 (x,y−1,z)或 (x,y,z−1)。
这个空间的外围是墙壁,不可穿过。由于空间内很暗,铃并不知道自己是否走到了墙边。也就是说,她在随机选择三种方向尝试移动时,有可能撞在墙上。
铃想要知道,自己在第一次撞墙时,「到澪的曼哈顿距离(在本题中的情况就是 x,y,z坐标之和)」的k次方的期望值。
你只需要求出答案对 998244353取模的结果。
范围限制
1≤A,B,C≤5×106,1≤k≤107。
解法