刚开始有一个三角形,每秒会出现一个点,它会等概率随机地和目前图形最外围的相邻某两个点连边。
所有点有标号,所有边都是无向边,边权为 。
输入 ,对于每个 求出图形生长到有恰好 个点后两点间最短路的长度的和的期望,对输入的质数 取模。
形式化题意:
无限大的二维平面上刚开始有一个三条无向边构成的三角形,即存在点 和边 。接下来第 秒:
输入 ,对于每个 求出 秒后所有无序点对之间最短路的长度的和的期望值,对输入的质数 取模。
第一行两个整数 。
为避免输出量过大,输出一行一个整数表示 的所有答案的异或和。
4 998244353
7
10 1000000007
67634987
【样例 1 解释】
此时共有三种情况:
不难发现每种情况下最短路总和都是 ,故期望为 。
【样例 2 解释】
从 到 的答案依次为:
7 13 800000027 800000038 190476238 138095302 124338708
【数据范围】
对于所有测试数据,,,保证 是质数。
【提示】
建议选手使用这份 std 使用的快速取模模板以减小常数因子:
typedef __int128_t lll; typedef unsigned long long ull; struct FastMod{ull b, m; inline void init(ull x){b = x, m = ((lll)1 << 64) / b;} inline ull Mod(ull a){ ull q = ull((lll)m * a >> 64); ull r = a - q * b; return r >= b ? r - b : r; } }md;