質問のリンク
http://codeforces.com/contest/615/problem/D ソリューションのリンクは http://codeforces.com/contest/615/submission/15260890です
以下のコードでは、mod=1000000007 の mod から 1 が減算される理由を理解できません。
ll d = 1;
ll ans = 1;
for (auto x : cnt) {
ll cnt = x.se;
ll p = x.fi;
ll fp = binPow(p, (cnt + 1) * cnt / 2, MOD);
ans = binPow(ans, (cnt + 1), MOD) * binPow(fp, d, MOD) % MOD;
d = d * (x.se + 1) % (MOD - 1);//why ??
}