另一个问题

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

NinjaSword @ 2019-11-08 20:52:19

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include <algorithm>
using namespace std;
int n,q,i,j,c,a[1010],b[1010],d[1010],zxz,tmp;
main()
{
    cin>>n>>q;
    for(i=1;i<=n;i++)
        cin>>a[i];//馆编码 
    for(i=1;i<=q;i++)
    {
        cin>>b[i];//长度 
        cin>>d[i];//需求码 
    }
    for(i=1;i<=q;i++)
    {
        zxz=9999;
        tmp=pow(10,b[i]);
        for(j=1;j<=n;j++)
            if(a[j]%tmp==d[i]&&zxz>a[j]) zxz=a[j]; 
        if(zxz!=9999) cout<<zxz<<endl;
        else cout<<"-1"<<endl; 
    }
    return 0;
} 

我的代码到底哪里有问题,为什么本地输出和数据一样,在线WA九个?求助!!


by xiaomic @ 2019-11-08 21:07:14

你先把它sort一下就不用判断了

我改了一下

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include <algorithm>
using namespace std;
int n,q,i,j,c,a[1010],b[1010],d[1010],zxz,tmp;
main()
{
    cin>>n>>q;
    for(i=1;i<=n;i++)
        cin>>a[i];//馆编码 
    for(i=1;i<=q;i++)
    {
        cin>>b[i];//长度 
        cin>>d[i];//需求码 
    }
    sort(a,a+n);
    for(i=1;i<=q;i++)
    {
        zxz=0;
        tmp=pow(10,b[i]);
        for(j=1;j<=n;j++)
            if(a[j]%tmp==d[i])
            {
                cout<<a[j]<<endl;
                zxz=1;
                break;
            }
        if(zxz==0) cout<<"-1"<<endl; 
    }
    return 0;
}

AC


by NinjaSword @ 2019-11-13 19:30:36

太感谢了!! %%%


|