1. 程式人生 > >Codeforces #506 D. Concatenated Multiples

Codeforces #506 D. Concatenated Multiples

#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; }