专栏文章
【题解】P3955 [NOIP2017 普及组] 图书管理员
P3955题解参与者 2已保存评论 1
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @miqkxllp
- 此快照首次捕获于
- 2025/12/04 06:29 3 个月前
- 此快照最后确认于
- 2025/12/04 06:29 3 个月前
这题看着挺简单的,其实也挺简单的。
我们用 数组来维护图书编码,用 数组来维护需求码的长度,用 数组维护需求码。
那么每次枚举书的编码,求 的后 位数,然后比对是否是对应的需求码,如果是的话那么判断一下是否最小,如果是,就更新 变量,最后输出 即可。
那么怎么求 呢?可以发现,我们要求后 位,那么就是 对 取余!
最后还要特判一下,是否输出 即可。
CPP#include<bits/stdc++.h>
using namespace std;
const int N=5000+5;
const int M=1e9+5;
int book[N],len[N],num[N];
int main(){
int n,q;
cin>>n>>q;
for(int i=1;i<=n;i++) cin>>book[i];
for(int i=1;i<=q;i++){
cin>>len[i]>>num[i];
int cnt=pow(10,len[i]);
int minn=M;
for(int j=1;j<=n;j++){
if(book[j]%cnt==num[i] && book[j]<minn){
minn=book[j];
}
}
if(minn!=M) cout<<minn<<endl;//特判
else cout<<-1<<endl;
}
return 0;
}
相关推荐
评论
共 1 条评论,欢迎与作者交流。
正在加载评论...