P3955 图书管理员
题目传送门
方法一:
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#define fre(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
using namespace std;
const int MAX=2147483647;
const int N=1e3+10;
int n,q,l;
string s[N],x;
bool cmp(string a,string b)
{
if(a.size()==b.size()) return a<b;
else return a.size()<b.size();
}
void input()
{
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++) cin>>s[i];
sort(s+1,s+1+n,cmp);
while(q--)
{
bool f=0;
cin>>l>>x;
for(int i=1;i<=n;i++)
{
int len=s[i].size();
if(s[i].find(x,len-l)==len-l&&len>=l) //len不能比l小
{
cout<<s[i]<<endl;
f=1;
break;
}
}
if(!f) cout<<-1<<endl;
}
}
int main()
{
//fre();
input();
return 0;
}
方法二:
#include<cstdio>
#include<iostream>
#include<cmath>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#define fre(x) freopen(#x".in","r",stdin),freopen(#x".out","w",stdout);
using namespace std;
const int MAX=2147483647;
const int N=1e6;
int n,q;
int a[1010];
struct dz
{
int x,m;
} b[1010];
void input()
{
cin>>n>>q;
for(int i=1;i<=n;i++) cin>>a[i];
sort(a+1,a+1+n);
for(int i=1;i<=q;i++) cin>>b[i].x>>b[i].m;
}
void work()
{
for(int i=1;i<=q;i++)
{
bool ok=0;
int Mod=pow(10,b[i].x);
for(int j=1;j<=n;j++)
{
if(a[j]%Mod==b[i].m)
{
cout<<a[j]<<endl;
ok=1;
break;
}
}
if(!ok) cout<<-1<<endl;
}
}
int main()
{
input();
work();
return 0;
}