专栏文章
题解:AT_abc433_d [ABC433D] 183183
AT_abc433_d题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mimxryqn
- 此快照首次捕获于
- 2025/12/01 17:18 3 个月前
- 此快照最后确认于
- 2025/12/01 17:18 3 个月前
思路
将函数转化为 其中 。
暴力枚举 会超时。
进一步转化 。
令 。
考虑 确定时, 确定进一步可以算出 。则若能统计 余数为 的个数,累加给答案即可。
代码
CPP#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;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...