样例和自己试的几个数字都没问题,但只有20?

P3955 [NOIP2017 普及组] 图书管理员

yy0000 @ 2024-03-15 15:15:09

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <stdio.h>

using namespace std;

int main(){
    int n,q;
    cin>>n>>q;
    int bk[n],flag[n],hum[q],wei[q];//书本数组,标记数组,需求码数组,需求码位数数组
    for(int i=0;i<n;i++){
        cin>>bk[i];
        flag[i]=0;
    }
    for(int i=0;i<q;i++){
        cin>>wei[i]>>hum[i];
    }
    sort(bk,bk+n);
    for(int i=0;i<q;i++){
        int chu=1,tip=0;
        for(int k=0;k<wei[i];k++)
           {
               chu=chu*10;//求除数
           }
        for(int j=0;j<n;j++){
            if(hum[i]==bk[j]%chu&&flag[j]==0){//书本编号最后几位来比较且标记为0
                tip++;
                flag[j]=1;
                cout<<bk[j]<<endl;
                break;
                }
            }
            if(tip==0)//没找到则输出0
                cout<<-1<<endl;
        }
    return 0;
}

by drboy @ 2024-03-15 15:55:35

代码没问题。

flag是用来标记书是否被读者请求过,如果被请求过,代码中的逻辑就会跳过这本书。这个条件题目中并没有要求。

我猜大概是这个原因导致的吧。


by liuyangxiao1012 @ 2024-07-02 22:43:21

同意楼上


|