difficultlong @ 2024-09-28 21:06:55
代码:
#include<bits/stdc++.h>
using namespace std;
int n,q;
int tb[1001],fh[1001][9],xbc[1001],xb[1001];
int main(){
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++){
scanf("%d",&tb[i]);
}
for(int i=1;i<=q;i++){
scanf("%d%d",&xbc[i],&xb[i]);
}
sort(tb+1,tb+n+1);
for(int i=1;i<=n;i++){
int a=tb[i];
int j=1;
while(a){
fh[i][j]=a%10;
a/=10;
j++;
}
}
bool flag;
for(int i=1;i<=q;i++){
int a=xb[i],m[9];
int j=1;
while(j<=xbc[i]){
m[j]=a%10;
a/=10;
j++;
}
for(int k=1;k<=n;k++){
int l=1;
flag=true;
while(l<=xbc[i]){
if(m[l]!=fh[k][l]){
flag=false;
break;
}
l++;
}
if(flag){
printf("%d\n",tb[i]);
break;
}
}
if(!flag){
printf("-1\n");
}
}
return 0;
}
按照样例复制粘贴后:
输出结果
5 5
2123
1123
23
24
24
2 23
3 123
3 124
2 12
2 12
———
23
24
-1
-1
-1
(上面是我的输入和输出,输出和样例对不上)
by zfs732 @ 2024-09-30 23:29:56
tb[i]
,这里的 i
是查询的索引,而不是图书的索引。正确的应该是输出 tb[k]
,其中 k
是图书的索引。以下是仅修改必要部分后的修正代码:
#include<bits/stdc++.h>
using namespace std;
int n,q;
int tb[1001],fh[1001][9],xbc[1001],xb[1001];
int main(){
scanf("%d%d",&n,&q);
for(int i=1;i<=n;i++){
scanf("%d",&tb[i]);
}
for(int i=1;i<=q;i++){
scanf("%d%d",&xbc[i],&xb[i]);
}
sort(tb+1,tb+n+1);
for(int i=1;i<=n;i++){
int a=tb[i];
int j=1;
while(a){
fh[i][j]=a%10;
a/=10;
j++;
}
}
bool flag;
for(int i=1;i<=q;i++){
int a=xb[i],m[9];
int j=1;
while(j<=xbc[i]){
m[j]=a%10;
a/=10;
j++;
}
for(int k=1;k<=n;k++){
int l=1;
flag=true;
while(l<=xbc[i]){
if(m[l]!=fh[k][l]){
flag=false;
break;
}
l++;
}
if(flag){
printf("%d\n", tb[k]); // 修改:从 tb[i] 改为 tb[k]
break;
}
}
if(!flag){
printf("-1\n");
}
}
return 0;
}
printf("%d\n", tb[i]);
printf("%d\n", tb[k]);
by difficultlong @ 2024-10-02 08:21:06
@zfs732 感谢大佬,已关注(不胜感激啊!!!)