这一题刚开始一看容易想复杂去了,其实这一题还是比较容易的
关键思路:
通过题意我们问题的关键在于,如何去判断是否有我们想要的书;
1)知道长度和后缀,我们需要去找后缀相等的数的编号的书;
2)有相同后缀的书,我们要去编号较小的书;
问题得以解答:
1)我们对所有编号的书排序;
2)我们通过模运算,可以知道我们的后缀是否相等;
—模的值 = 10^长度
代码如下(当然在竞赛中我们尽量使用格式化的输入输出,cin,cout的效率相对比较低)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
using namespace std;
int n,q;//n图书数量、q读者数量
const int N = 1010;
int id[N],len,b;//b为编码
int ans[N];
int main(){
cin >> n >> q;
for(int i = 1; i <=n; i++) cin >> id[i];
sort(id+1,id+n+1);
for(int i =1 ; i <=q; i++){
bool flag = 0;
cin >> len >> b;
int t = pow(10,len);
for(int j = 1; j<=n;j++)
if((id[j]-b)%t==0){
flag = 1;
cout << id[j] <<endl;
break;
}
if(!flag){
cout << -1 <<endl;
}
}
return 0;
}
请问图书编码最小的那本书的图书编码这段体现在代码中了么?
先进行了排序