[C++]60分,求dalao改进

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

A_Big_Jiong @ 2018-08-04 22:35:38

献上本蒟蒻的代码

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1010;
int n,q;
int book[maxn],reader[maxn],l[maxn];
int cmp(int x,int y){
    return x<y;
}
int main(){
    scanf("%d%d",&n,&q);
    for(int i=0;i<n;i++)
         scanf("%d",&book[i]);
    for(int i=0;i<q;i++)
        scanf("%d%d",&l[i],&reader[i]);
    sort(book,book+n,cmp);
    for(int i=0;i<n;i++){
        int k=1;
        for(int p=0;p<l[i];p++)
            k*=10;
        int flag=0;
        for(int j=0;j<q;j++)
            if(reader[i]==book[j]%k){
                printf("%d\n",book[j]);
                flag=1;
                break;
            }
        if(flag==0){
             printf("-1\n");
        }
    }
    return 0;
}

本人只是个初学者,1、2、3、4都WA,真的不知道为什么,求各位dalao改善。

感谢各位。


by Smile_Cindy @ 2018-08-04 22:53:29

@zcj040323

#include <bits/stdc++.h>
#define N (int)(1e3+7)
using namespace std;
int a[N];
int main()
{
    //freopen("test.txt","r",stdin);
    int n,q;
    scanf("%d%d",&n,&q);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    sort(a+1,a+n+1);
    for(int i=1;i<=q;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        bool pd=0;
        for(int i=1;i<=n;i++)
        {
            for(int p=10;p<=1e8;p*=10)
            {
                if(a[i]%p==y)
                {
                    printf("%d\n",a[i]);
                    pd=1;
                    break;
                }
            }
            if(pd)break;
        }
        if(!pd)puts("-1");
    }
    return 0;
}

不能先乘好再查询 得边乘边查询


by A_Big_Jiong @ 2018-08-05 10:27:24

@Alpha

感谢dalao,我的程序调试中


by A_Big_Jiong @ 2018-08-05 10:53:54

@Alpha

感谢dalao,本题已AC


by xzy062609 @ 2018-10-10 13:09:52

include<bits/stdc++.h>

using namespace std; int m[8]={1,10,100,1000,10000,100000,1000000,10000000}; int n,q; int b[1005]; int main() { cin>>n>>q; for(int i=0;i<n;i++) { cin>>b[i]; } sort(b,b+n); while(q--) { int l,n; cin>>l>>n; int a=-1; for(int i=0;i<n;i++) { int g=b[i]%m[l]; if(g==n) { a=b[i]; break; } } cout<<a<<endl; } return 0; }


|