vedantsharma2508's blog

By vedantsharma2508, history, 5 months ago, In English

The problem statement here is https://codeforces.net/contest/1535/problem/B

#include<bits/stdc++.h>
using namespace std;

int main() {
    int t;
    cin >> t;
    while (t--) {
        int n;
        int ans = 0;
        cin >> n;
        int a[n+5];
        for (int i = 1; i <= n; i++) {
            cin >> a[i];
        }

        for (int i = 1; i <= n; i++) {
            for (int j = i+1; j <= n; j++) {
                if (__gcd(a[i], a[j]*2) + __gcd(a[i]*2, a[j]) > 2) ans++;
            }
        }
        cout << ans << endl;
    }
    return 0;
}

I can't understand why this is an accepted solution.

Even when here we are counting two times 1) gcd(2*a[j],a[i]) 2) gcd(2*a[i],a[j])

Answer should have been something else.

In other words what is the need to see the two times the gcd ??

  • Vote: I like it
  • 0
  • Vote: I do not like it

»
5 months ago, # |
  Vote: I like it 0 Vote: I do not like it

It's just very fancy way to say is this pair good or no. Because if it's not both gcds will be 1 and no matter how we place them in array result wouldn't change.