注意
1. 如果前面出现过此字符串的前缀,忽略掉此字符串
2. 使用pow函数时强转long long,否则数据太大,会出现错误
#include<bits/stdc++.h> using namespace std; typedef long long ll; int n; int m; vector<string> str; int vis[100]; int main(){ ll sum=0; ll cnt=0; cin>>n>>m; sum=(ll)pow(10,n); for(int i=0;i<m;i++){ string s; cin>>s; str.push_back(s); } sort(str.begin(),str.end()); for(int i=0;i<m;i++){ for(int j=i+1;j<m&&!vis[i];j++){ if(str[i]==str[j].substr(0,str[i].size())){ vis[j]=1; } } } for(int i=0;i<m;i++){ if(!vis[i]&&n>=str[i].size()){ cnt+=(ll)pow(10,n-str[i].size()); } } cout<<sum-cnt; return 0; }