P4270
(以下下标都是
还是考虑同一高度是内部贡献的,所以第
由于高度不变,不妨把所有高度全部减去最小值
(对于
然后又有
那么考虑把必然为
求和就是
后面那坨是
然后就变成了
这个要求 是不是把杜教筛板子粘过来就过了。(???)
可以把枚举 dfs 枚举质因子,于是
复杂度是
auto dfs = [](auto U,int u,ll d,ll phi)->int {
if(u == D.size()) return Pow(2,d)*phi%p;
auto t = D[u]; int res = 0;
ll di = t.first, pw = t.second;
for(int i=0;i<=pw;++i){
P(res,U(U,u+1,d,phi));
if(i == pw) break; d *= di;
if(i == pw-1) phi /= (di-1); else phi /= di;
} return res;
};
质数处
for 4 res 6 :
1 1 1 1
2 2 2 2
2 3 2 3
3 2 3 2
3 3 3 3
4 4 4 4
for 6 res 16 :
1 1 1 1 1 1
2 2 2 2 2 2
2 3 2 3 2 3
3 2 3 2 3 2
3 3 3 3 3 3
3 3 4 3 3 4
3 4 3 3 4 3
3 4 4 3 4 4
4 3 3 4 3 3
4 3 4 4 3 4
4 4 3 4 4 3
4 4 4 4 4 4
4 5 4 5 4 5
5 4 5 4 5 4
5 5 5 5 5 5
6 6 6 6 6 6
for 8 res 26 :
1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2
2 3 2 3 2 3 2 3
3 2 3 2 3 2 3 2
3 3 3 3 3 3 3 3
4 4 4 4 4 4 4 4
4 4 4 5 4 4 4 5
4 4 5 4 4 4 5 4
4 4 5 5 4 4 5 5
4 5 4 4 4 5 4 4
4 5 4 5 4 5 4 5
4 5 5 4 4 5 5 4
4 5 5 5 4 5 5 5
5 4 4 4 5 4 4 4
5 4 4 5 5 4 4 5
5 4 5 4 5 4 5 4
5 4 5 5 5 4 5 5
5 5 4 4 5 5 4 4
5 5 4 5 5 5 4 5
5 5 5 4 5 5 5 4
5 5 5 5 5 5 5 5
6 6 6 6 6 6 6 6
6 7 6 7 6 7 6 7
7 6 7 6 7 6 7 6
7 7 7 7 7 7 7 7
8 8 8 8 8 8 8 8
for 9 res 21 :
1 1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3 3
3 3 4 3 3 4 3 3 4
3 4 3 3 4 3 3 4 3
3 4 4 3 4 4 3 4 4
4 3 3 4 3 3 4 3 3
4 3 4 4 3 4 4 3 4
4 4 3 4 4 3 4 4 3
4 4 4 4 4 4 4 4 4
5 5 5 5 5 5 5 5 5
6 6 6 6 6 6 6 6 6
6 6 7 6 6 7 6 6 7
6 7 6 6 7 6 6 7 6
6 7 7 6 7 7 6 7 7
7 6 6 7 6 6 7 6 6
7 6 7 7 6 7 7 6 7
7 7 6 7 7 6 7 7 6
7 7 7 7 7 7 7 7 7
8 8 8 8 8 8 8 8 8
9 9 9 9 9 9 9 9 9