题解
2025-07-07 17:12:03
发布于:广东
1阅读
0回复
0点赞
#include<cmath>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
#include<queue>
#include<vector>
#include<iostream>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
#define maxn 50010
#define inf 0x3f3f3f3f
const int mod=100003;
void read(int &x){
int f=1;x=0;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-') f=-1;ch=getchar();}
while(ch>='0'&&ch<='9') {x=x*10+ch-'0';ch=getchar();}
x*=f;
}
string s[maxn],na[maxn];
int n,m,len,ans,a[maxn],b[maxn],c[maxn];
void big_jia(){//高精加
memset(c,0,sizeof(c));
for(int i=1;i<=len;i++){
c[i]+=a[i]+b[i];
if(c[i]>=10){
c[i+1]+=c[i]/10;
c[i]%=10;
}
}
while(c[len+1])len++;
for(int i=1;i<=len;i++)a[i]=b[i];
for(int i=1;i<=len;i++)b[i]=c[i];
}
int main(){
read(n),read(m);
for(int i=1;i<=n;i++)cin>>s[i];
a[1]=1;b[1]=2,len=1;
for(int i=3;i<=n;i++){
big_jia();
}
sort(s****+n+1);
for(int i=1;i<=m;i++){
cin>>na[i];
int pos=lower_bound(s****+n+1,na[i])-s;
if(!s[pos].find(na[i],0))ans++;
}
cout<<ans<<endl;
for(int i=len;i;i--)cout<<c[i];
return 0;
}
这里空空如也
有帮助,赞一个