Codeforces #506 D. Concatenated Multiples
阿新 • • 發佈:2018-12-09
#include <iostream>
#include <math.h>
#include <string.h>
#include <map>
using namespace std;
long long mod[200010];
map<long,int> m[11];
int main(){
long long n,k,s,ans=0;
cin>>n>>k;
for(int i=0;i<n;i++){
char str[11];
scanf("%s",str);
s=atoi(str);
if (((s*10%k)*(long long)pow(10.0,strlen(str)-1)+s)%k==0)
ans--;
mod[i]=s%k;
m[strlen(str)][mod[i]]++;
}
for(int i=0;i<n;i++){
for(int j=1;j<11;j++){
mod[i]=(mod[i]*10)%k;
ans+=m[j][(k-mod[i])%k];
}
}
cout<<ans<<endl;
}