1 solutions

  • 0
    @ 2024-6-13 13:16:45

    模拟(数字模拟 100pts)

    • 从小到大排序所有图书,然后按照取出每个作者需求的k位进行比较
    #include<bits/stdc++.h>
    using namespace std;
    int p[]={1,10,100,1000,10000,100000,1000000,10000000,100000000,1000000000};
    const int N=1010;
    int a[N];
    int main()
    {
        int n,q;
        cin>>n>>q;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
        }
        sort(a+1,a+n+1); //从小到大排序
        while(q--)
        {
            int k,b;
            cin>>k>>b;
            int ans=-1;
            for(int i=1;i<=n;i++)
            {
                int t=a[i]%p[k]; //求a[i]的后k位
                if(t==b)
                {
                    ans=a[i];
                    break;
                }
            }
            cout<<ans<<endl; //输出对应的答案
        }
        return 0;
    }
    

    模拟(100pts)

    • 比较的时候使用数字比较,然后使用to_string()函数将数字转成字符串进行截取操作.
    #include<bits/stdc++.h>
    using namespace std;
    const int N=1010,INF=1e9;
    int n,m;
    int id[N];
    int main()
    {
        cin>>n>>m;
        for(int i=1;i<=n;i++)
        {
            cin>>id[i];
        }
        while(m--)
        {
            int l;
            string num;
            cin>>l>>num;
            int res=INF; //图书编码 
            for(int i=1;i<=n;i++)
            {
                string s=to_string(id[i]); //转成字符串好截取 
                if(s.size()>=l&&s.substr(s.size()-l)==num) //可以找到 
                {
                    res=min(res,id[i]); //更新图书编码 
                }
            }
            if(res==INF) res=-1;
            cout<<res<<endl;
        }
        return 0;
    }
    
    • 1

    Information

    ID
    1056
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    10
    Tags
    # Submissions
    6
    Accepted
    3
    Uploaded By