题目链接:https://nanti.jisuanke.com/t/40262
代码:
#include<bits/stdc++.h> using namespace std; const int N=1e5+5; string s[N]; typedef long long LL; map<string,LL> ma,ma1; int main() { ios::sync_with_stdio(false); int n; LL m; cin>>n>>m; int a[30]; for(int i=0;i<26;i++) { cin>>a[i]; } for(int i=1;i<=n;i++) { cin>>s[i]; } for(int i=1;i<=n;i++) { string ss; LL num=1; num=num%m; for(int j=0;j<s[i].size();j++) { ss+=s[i][j]; num*=a[s[i][j]-'a']; num=num%m; if(ma[ss]==0) ma[ss]++,ma1[ss]=num; else ma[ss]++; } } for(int i=1;i<=n;i++) { string ss; LL num=0; for(int j=0;j<s[i].size();j++) { ss+=s[i][j]; if(ma1[ss]>ma1[s[i]]) num+=ma[ss]; } if(i!=1)cout<<" "; cout<<num; } cout<<endl; }