图书管理员

**思路:**由于这个图书的编码不超过10 000 000,所以可以直接用int来直接判断,否则需要使用字符来存储,这个就相对比较麻烦。这里我用一个简单直接的想法,就是先将图书编码存储在数组中,进行升序后,第一个满足条件的就是得到的图书编码,后面的不在进行判断,如果全都不满足条件,那么输出-1,需要设置一个标志来进行判断。需要达到的条件可以用先存储的图书编码减去需求码后取需求码长度的10倍模得到的数为0,则能够满足条件,同时注意隐含条件进行取模的数必须大于等于0。这里取模可能相对不好理解,可以用不同位数的数进行不同位数的数取模,总结一下规律,还是可以理解的。 代码:

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
int a[1005];
int main(){
    int n,q;
    cin>>n>>q;
    memset(a,0,sizeof(a));
    for(int i=0;i<n;i++)
        cin>>a[i];
    sort(a,a+n);
    int len=0,num=0;
    for(int i=0;i<q;i++){
        cin>>len>>num;
        bool flag=true;
        for(int j=0;j<n;j++){
            int res=a[j]-num;
            if(res>=0&&res%(int)pow(10,len)==0){
                flag=false;
                cout<<a[j]<<endl;
                break;
            }
        }
        if(flag){
            cout<<"-1"<<endl;
        }
    }
    
    return 0;
}