u55545554 @ 2018-08-21 10:21:45
#include<iostream>
#include<cstring>
using namespace std;
struct bookes{
string book;
}books[1001];
struct needes{
string need;
}needs[1001];
struct shuchues{
string shuchu;
}shuchus[1001];
int main(){
int n,q;cin>>n>>q;
string son_string;
for(int i=1;i<=n;i++)shuchus[i].shuchu="-1";
for(int i=1;i<=n;i++)cin>>books[i].book;
for(int i=1;i<=q;i++){
cin>>needs[i].need;
for(int j=1;j<=n;j++){
son_string=books[j].book.substr(books[j].book.length()-needs[i].need.length(),needs[i].need.length());
if(son_string==needs[i].need&&son_string>shuchus[i].shuchu)shuchus[i].shuchu=son_string;
}
}
for(int i=1;i<=n;i++)cout<<shuchus[i].shuchu<<endl;
}
by Smile_Cindy @ 2018-08-21 10:23:44
@u55545554
整数就可以解决的为什么要用字符串?
#include <bits/stdc++.h>
#define N (int)(1e3+7)
using namespace std;
int a[N];
int main()
{
//freopen("test.txt","r",stdin);
int n,q;
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
sort(a+1,a+n+1);
for(int i=1;i<=q;i++)
{
int x,y;
scanf("%d%d",&x,&y);
bool pd=0;
for(int i=1;i<=n;i++)
{
for(int p=10;p<=1e8;p*=10)
{
if(a[i]%p==y)
{
printf("%d\n",a[i]);
pd=1;
break;
}
}
if(pd)break;
}
if(!pd)puts("-1");
}
return 0;
}
by u55545554 @ 2018-08-21 10:24:04
@Alpha 谢谢
by Prurite @ 2018-08-21 10:24:32
@u55545554 出现了什么贴上来一下 您英语不好吗,英语不好别玩OI
by Smile_Cindy @ 2018-08-21 10:27:14
@u55545554
还有你的substr干了什么?
就是第二十一行的问题
by u55545554 @ 2018-08-21 10:43:05
@星烁晶熠辉
by u55545554 @ 2018-08-21 10:43:59
@Alpha 很抱歉,请自行百度。。蒟蒻解释不清楚
by Prurite @ 2018-08-21 10:47:25
@u55545554 字符串下标越界(程序尝试访问下标为18446744073709551615的地方),被系统强行终止(RE)
by u55545554 @ 2018-08-21 10:48:17
@星烁晶熠辉 这么强。。
by u55545554 @ 2018-08-21 10:49:02
@星烁晶熠辉 还是能力不够,日后再做这道题。。
by Prurite @ 2018-08-21 10:54:25
@u55545554 这题就是一道模拟吧... 字符串也可以做, 直接利用sort配自定义cmp把原书号排序, 数据水使得我们可以从小到大地把所有书号都扫一遍, 找到第一个后缀为当前需求号的字符串输出即可.
附cmp函数:
bool cmp( string a, string b )
{
if ( a.length( )!=b.length( ) )
return a.length( )<b.length( );
else
return a<b;
}
// string类型默认的<是比较的字典序