20201029题解
t1
\(t\)组数据,\(inf(s)\)表示字符串s的无限重复。比较\(inf(a)\)和\(inf(b)\)。
\(|a|,|b|<=10^5,t<=10\)
直接把\(a\)和\(b\)扩大二倍然后把短的重复对齐到长的比较即可。
\(std\)做法:比较\(a+b\)和\(b+a\)。
t2
给出\(n,m\)。问可以构造出多少序列\(x\)满足:
\(\sqrt{x_1}+\sqrt{x_2}+...+\sqrt{x_n}=\sqrt{m}\)
求方案数模\(1e9+7\).
先把\(\sqrt{m}\)提出最大的系数k,使其根号下剩的数不能表示成\(\sqrt{x}+\sqrt{x}\)的形式。
提k的方法:枚举完全平方数,判断m可以整除的最大ii,提出i。
或者质因数分解,若cnt>=2将k=i*cnt/2。
然后问题转化成经典问题:
k个相同的球,放进n个不同盒子,可以有空盒的方案数。
\(C^{n-1}_{n+k-1}\)
组合数的\(O(n)\)求法:先预处理出阶乘,然后直接带入组合数公式,注意除法取模要求逆元。