Submission #3585844


Source Code Expand

#include <algorithm>
#include <iostream>
#include <vector>
#include <math.h>
#include <set>
#include <map>
#include <string>
#include <stack>
#include <queue>
#include <iomanip>
#include <numeric>
#include <tuple>
#include <bitset>
#include <complex>
#include <unistd.h>
#include <cassert>
#include <cctype>
#include <random>
#define _USE_MATH_DEFINES
#define _GLIBCXX_DEBUG
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> plglg;
typedef pair<double, ll> pdlg;
typedef tuple<int, int, int> tiii;
typedef tuple<ll, ll, ll> tlglglg;
typedef tuple<double, double, double> tddd;
typedef complex<double> xy_t;
int dx[4] = {1, 0, -1, 0};
int dy[4] = {0, 1, 0, -1};
double pi = 3.141592653589793;
ll mod = 1000000007;
int intmax = 2147483647;
int intmin = -2147483648;
ll llmax = 9223372036854775807;
ll llmin = -9223372036854775807;
int iinf = intmax / 8;
ll inf = llmax / 8;
double eps = 1e-11;

ll gcd(ll a, ll b) {
    return b != 0 ? gcd(b, a % b) : a;
}

int main() {
    ll n, k;
    cin >> n >> k;
    ll a[n];
    for (int i = 0; i < n; i++) {
        cin >> a[i];
        a[i] = gcd(a[i], k);
    }
    sort(a, a + n);
    ll b[n][2];
    for (int i = 0; i < n; i++) {
        fill(b[i], b[i] + 2, 0);
    }
    ll mark = 0;
    b[0][0] = a[0];
    b[0][1] = 1;
    for (int i = 1; i < n; i++) {
        if (a[i - 1] == a[i]) {
            b[mark][1]++;
        } else {
            mark++;
            b[mark][0] = a[i];
            b[mark][1] = 1;
        }
    }
    ll ans = 0;
    for (int i = 0; i <= mark; i++) {
        if ((b[i][0] * b[i][0]) % k == 0) {
            ans += b[i][1] * (b[i][1] - 1) / 2;
        }
        for (int j = i + 1; j <= mark; j++) {
            if ((b[i][0] * b[j][0]) % k == 0) {
                ans += b[i][1] * b[j][1];
            }
        }
    }
    cout << ans << endl;
}

Submission Info

Submission Time
Task C - ロト2
User NMLibrary
Language C++14 (GCC 5.4.1)
Score 400
Code Size 1945 Byte
Status AC
Exec Time 109 ms
Memory 4992 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 3
AC × 25
Set Name Test Cases
Sample 00_example_01.txt, 00_example_02.txt, 00_example_03.txt
All 00_example_01.txt, 00_example_02.txt, 00_example_03.txt, 10_random_01.txt, 10_random_02.txt, 10_random_03.txt, 10_random_04.txt, 10_random_05.txt, 20_max_01.txt, 20_max_02.txt, 20_max_03.txt, 20_max_04.txt, 20_max_05.txt, 30_overflow_01.txt, 30_overflow_02.txt, 40_dmax_01.txt, 40_dmax_02.txt, 40_dmax_03.txt, 50_prime_01.txt, 50_prime_02.txt, 50_prime_03.txt, 60_prime_pow_01.txt, 60_prime_pow_02.txt, 60_prime_pow_03.txt, 70_one_01.txt
Case Name Status Exec Time Memory
00_example_01.txt AC 1 ms 256 KB
00_example_02.txt AC 1 ms 256 KB
00_example_03.txt AC 1 ms 256 KB
10_random_01.txt AC 1 ms 256 KB
10_random_02.txt AC 1 ms 256 KB
10_random_03.txt AC 1 ms 256 KB
10_random_04.txt AC 1 ms 256 KB
10_random_05.txt AC 1 ms 256 KB
20_max_01.txt AC 79 ms 4864 KB
20_max_02.txt AC 75 ms 4992 KB
20_max_03.txt AC 94 ms 4864 KB
20_max_04.txt AC 74 ms 4992 KB
20_max_05.txt AC 109 ms 4992 KB
30_overflow_01.txt AC 70 ms 4992 KB
30_overflow_02.txt AC 69 ms 4992 KB
40_dmax_01.txt AC 108 ms 4992 KB
40_dmax_02.txt AC 108 ms 4992 KB
40_dmax_03.txt AC 107 ms 4992 KB
50_prime_01.txt AC 78 ms 4992 KB
50_prime_02.txt AC 86 ms 4992 KB
50_prime_03.txt AC 96 ms 4992 KB
60_prime_pow_01.txt AC 95 ms 4992 KB
60_prime_pow_02.txt AC 93 ms 4992 KB
60_prime_pow_03.txt AC 93 ms 4992 KB
70_one_01.txt AC 63 ms 4992 KB