“21 天好习惯”第一期-13

H xay loves count

题意

在数组 a a a 中找满足 a i ∗ a j = a k a_i*a_j=a_k aiaj=ak 的三元组 ( i , j , k ) (i,j,k) (i,j,k)

暴力即可(看似是 O ( n 2 ) O(n^2) O(n2)​ 但不是)

#include 
using namespace std;
#define rep(i, j, k) for (ll(i) = (j); (i) <= (k); (++i))
typedef long long ll;
const int N = 1e6 + 7;
ll a[N];
signed main() {ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);int n, x, mx = 0;cin >> n;rep(i, 1, n) {cin >> x;a[x]++;mx = max(mx, x);}ll ans = 0;rep(i, 1, mx) {rep(j, i, mx) {ll x = i * j;if (x > mx)break;ans += a[i] * a[j] * a[x] * (j == i ? 1 : 2);}}cout << ans << '\n';return 0;
}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部