Submission #3570515


Source Code Expand

#include<cstdio>
#include<cstring>
#include<vector>
#include<queue>
#include<algorithm>
#include<cmath>
#include<climits>
#include<string>
#include<set>
#include<numeric>
#include<map>
#include<iostream>
using namespace std;
#define rep(i,n) for(int i = 0;i<((int)(n));i++)
#define reg(i,a,b) for(int i = ((int)(a));i<=((int)(b));i++)
#define irep(i,n) for(int i = ((int)(n)-1);i>=0;i--)
#define ireg(i,a,b) for(int i = ((int)(b));i>=((int)(a));i--)
typedef long long ll;
typedef pair<ll, ll> mp;

/*

*/

ll gcd(ll a,ll b){
	if(b==0)return a;
	return gcd(b,a%b);
}

int main(void){
	ll n,k,a[200010],ans=0;
	map<ll,ll> m;
	vector<mp> d;
	cin>>n>>k;
	rep(i,n){
		cin>>a[i];
		m[gcd(k,a[i])]++;//約数に対応させる
	}
	//操作しやすいようにベクトルに変換
	for(auto itr = m.begin(); itr != m.end(); ++itr) {
		d.push_back({itr->first,itr->second});
	}
	//異なるグループから選ぶ
	rep(i,d.size()){
		rep(j,i){
			if((d[i].first*d[j].first)%k==0){
				ans+=d[i].second*d[j].second;
			}
		}
	}
	//同じグループから選ぶ
	rep(i,d.size()){
		if((d[i].first*d[i].first)%k==0){
			ans+=d[i].second*(d[i].second-1)/2;
		}
	}
	cout<<ans<<endl;
	return 0;
}

Submission Info

Submission Time
Task C - ロト2
User RMQ
Language C++14 (GCC 5.4.1)
Score 400
Code Size 1243 Byte
Status AC
Exec Time 109 ms
Memory 1920 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 2 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 76 ms 1792 KB
20_max_02.txt AC 73 ms 1792 KB
20_max_03.txt AC 90 ms 1792 KB
20_max_04.txt AC 73 ms 1792 KB
20_max_05.txt AC 108 ms 1792 KB
30_overflow_01.txt AC 69 ms 1792 KB
30_overflow_02.txt AC 69 ms 1792 KB
40_dmax_01.txt AC 109 ms 1920 KB
40_dmax_02.txt AC 109 ms 1920 KB
40_dmax_03.txt AC 109 ms 1920 KB
50_prime_01.txt AC 83 ms 1792 KB
50_prime_02.txt AC 84 ms 1792 KB
50_prime_03.txt AC 90 ms 1792 KB
60_prime_pow_01.txt AC 91 ms 1792 KB
60_prime_pow_02.txt AC 89 ms 1792 KB
60_prime_pow_03.txt AC 88 ms 1792 KB
70_one_01.txt AC 61 ms 1792 KB