本文主要是介绍E - ∙ (Bullet) 不能同池,计数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
…
主要是他这个-1 。。
然后同号 异号 ?
的处理。。和计算。
void solve() {cin >> n;map<ar, ar>mp;int cnt = 0;for (int i = 1; i <= n; ++i) {int x, y; cin >> x >> y;if (x == 0 && y == 0)cnt++;else if (x == 0)mp[ {0, 0}][0]++;else if (y == 0)mp[ {0, 0}][1]++;else {int t = gcd(x, y);x /= t, y /= t;if (x < 0 && y < 0)mp[ { -x, -y}][0]++;else if (x < 0)mp[ {y, -x}][1]++;else if (y < 0)mp[ { -y, x}][1]++;else mp[ {x, y}][0]++;}}Z ans = 1;for (auto[_, t] : mp) {auto[x, y] = t;ans *= qpow(2, x) + qpow(2, y) - 1;}ans += Z(cnt - 1);cout << ans;
};//我们可以提出最大公约数之后 用map<ar,int>cnt
// 那就是联通分量。。相乘不行吗
// https://www.cnblogs.com/myrcella/p/12913733.html
这篇关于E - ∙ (Bullet) 不能同池,计数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!