刚学OI求助

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

哔哩哔哩 @ 2018-10-02 22:26:34

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string>
#include<cstring>
using namespace std;
long long x[1005],tmp[1005],xc[1005],a[1005];
int main()
{
    int n,q;
    scanf("%d%d",&n,&q);
    memset(tmp,1,sizeof(tmp));
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
    }
    sort(a,a+1+n);
    for(int i=1;i<=q;i++)
    {
        cin>>xc[i]>>x[i];
        for(int j=1;j<=xc[i];j++) tmp[i]*=10;
    }
    for (int i=1;i<=q;i++){
        for (int j=1;j<=n;j++)
            if (a[j]%tmp[i]==x[i]){
                cout<<a[j]<<endl;
                break;
            }
            else if (j==n){
                cout<<"-1"<<endl;
                break;
            }    
    }
}

深夜问 感谢了!


by Kiel @ 2018-10-02 22:30:20

参考一下这个

#include<cstdio>
#include<ctype.h> 
#include<cstring>
#include<string>
#include<iostream>
using namespace std;
int deno(int x){
    int ans=1;
    while(x--){
        ans*=10;
    }
    return ans;
}
int main(){
    int n,q,ap;
    int s,a[1000];
    cin>>n>>q;
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    while(q--){
        scanf("%d %d",&ap,&s);
        int big=10000001;
        for(int i=1;i<=n;i++){
            if(a[i]%(deno(ap))==s){
                if(a[i]<big)big=a[i];
            }
        }
        if(big!=10000001){
            cout<<big<<endl;
        }
        else{
            cout<<-1<<endl;
        }
    }
    return 0;
}

by Kiel @ 2018-10-02 22:30:23

@哔哩哔哩


by 漳平陈嘉琦 @ 2018-10-02 22:30:55

噢,大佬装弱


by 哔哩哔哩 @ 2018-10-02 22:31:10

能不能帮我看看我那个,不知道错哪里


by WA鸭鸭 @ 2018-10-02 22:34:28

@哔哩哔哩 memset炸了


by 哔哩哔哩 @ 2018-10-02 22:38:01

@WA鸭鸭 为什么memset会炸啊 感觉使用没问题啊


by Kiel @ 2018-10-02 22:38:59

@哔哩哔哩 memset 是按字节分配,你配出来的话是 11111111


by Kiel @ 2018-10-02 22:39:52

@哔哩哔哩 memset 复制到127,每个数字中的数字是 12712712,他是按字节分配


by 哔哩哔哩 @ 2018-10-02 22:42:07

感谢指出一直不知道的错误!@something


|