题解 洛谷P3955 【图书管理员】

# 题解 P3955 【图书管理员】(论图书管理员有多懒)

洛谷原版:https://www.luogu.com.cn/blog/jvruo-0076/solution-p3955

Some ideas

首先,读入并存入数组,排列。取余查找*,有就输出**,无输出-1
* 用循坏!千万别用pow函数。虽然洛谷上pow能过,但一个系统一个数据。别的网站由于实数整数原因,过不了!!!
**因为先前已经排列,所以没必要再去找。一来浪费时间,二来不会输出最小的

$\color{white}\colorbox{white}{\text{第三篇题解,管理大大求过!!!}}$

Code

#include<bits/stdc++.h>
using namespace std;
int n,q,ans,noww;
int a[1005],b[1005],c[1005];
int main()
{
    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++)
        scanf("%d%d",&b[i],&c[i]);//读入
    for(int i=1;i<=q;i++)
    {
         ans=-1;noww=1;//重新定义,避免之前的影响这一次运算
         //while(b[i]--)noww*=10;
         while(c[i]>=noww)noww*=10;/*两种循坏方式*/
         for(int j=1;j<=n;j++)    
           if(a[j]%noww==c[i])//取余判断
           {
            ans=a[j];           
            break;
           }  
           printf("%d\n",ans);//输出
    }
    return 0;
}

最后过了

上一篇:2019蓝桥杯国赛C++B组程序题部分


下一篇:1005: 求和