题解:AT_abc433_d [ABC433D] 183183
kuaiCreator · · 题解
思路
将函数转化为
暴力枚举
进一步转化
令
考虑
代码
#include<bits/stdc++.h>
#define ll long long
using namespace std;
map<pair<int, int>, int> mp;
ll n, m, ans, base[15], a[200005], l[200005];
int cal(int n) {
int len = 0;
do {
len++;
n /= 10;
} while (n);
return len;
}
int main() {
ios::sync_with_stdio(0);
cin.tie(0), cout.tie(0);
cin >> n >> m;
base[0] = 1;
for (int i = 1; i <= 10; i++) base[i] = base[i - 1] * 10;
for (int i = 1; i <= n; i++) {
cin >> a[i];
l[i] = cal(a[i]);
for (int d = 1; d <= 10; d++) {
int r = a[i] % m * base[d] % m;
mp[make_pair(d, r)]++;
}
}
for (int i = 1; i <= n; i++) {
int r = (m - a[i] % m) % m;
ans += mp[make_pair(l[i], r)];
}
cout << ans;
return 0;
}