洛谷 P3955 图书管理员【模拟/思维】

题目描述

图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个 正整数。 每位借书的读者手中有一个需求码,这个需求码也是一个正整数。如果一本书的图 书编码恰好以读者的需求码结尾,那么这本书就是这位读者所需要的。 小 D 刚刚当上图书馆的管理员,她知道图书馆里所有书的图书编码,她请你帮她写 一个程序,对于每一位读者,求出他所需要的书中图书编码最小的那本书,如果没有他 需要的书,请输出-1。

输入输出格式

输入格式:

输入文件的第一行,包含两个正整数 n 和 q,以一个空格分开,分别代表图书馆里 书的数量和读者的数量。

接下来的 n 行,每行包含一个正整数,代表图书馆里某本书的图书编码。

接下来的 q 行,每行包含两个正整数,以一个空格分开,第一个正整数代表图书馆 里读者的需求码的长度,第二个正整数代表读者的需求码。

输出格式:

输出文件有 q 行,每行包含一个整数,如果存在第 i 个读者所需要的书,则在第 i 行输出第 i 个读者所需要的书中图书编码最小的那本书的图书编码,否则输出-1。

输入输出样例

输入样例#1: 复制

5 5
2123
1123
23
24
24
2 23
3 123
3 124
2 12
2 12

输出样例#1: 复制

23
1123
-1
-1
-1 

说明

【数据规模与约定】

对于 20%的数据,1 ≤ n ≤ 2。

另有 20%的数据,q = 1。

另有 20%的数据,所有读者的需求码的长度均为 1。

另有 20%的数据,所有的图书编码按从小到大的顺序给出。

对于 100%的数据,1 ≤ n ≤ 1,000,1 ≤ q ≤ 1,000,所有的图书编码和需求码均 不超过 10,000,000。

【分析】:注意可以直接看成数字,不必字符串。因为给了位数以及范围,处理起来更加方便。

【代码】:

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f
using namespace std;
int a[1000+10],b;

int main()
{
    int n,m,l,f;
    cin>>n>>m;

    for(int i=1;i<=n;i++) scanf("%d",a+i);
    sort(a+1,a+n+1);

    while(m--)
    {
        f=-1;//询问内部初始化
        scanf("%d %d",&l,&b);

        int w = pow(10,l); //截取位数

        for(int i=1;i<=n;i++)
            if(a[i]%w == b)
            {
               f=a[i];
               break;
            }

        printf("%d\n",f);
    }
}

在线查询

时间: 2024-10-10 13:46:04

洛谷 P3955 图书管理员【模拟/思维】的相关文章

洛谷 P3955 图书管理员【民间数据】

P3955 图书管理员[民间数据] 题目背景 数据已再次修正 (既然你们不要前导0我就去掉了) 题目描述 图书馆中每本书都有一个图书编码,可以用于快速检索图书,这个图书编码是一个 正整数. 每位借书的读者手中有一个需求码,这个需求码也是一个正整数.如果一本书的图 书编码恰好以读者的需求码结尾,那么这本书就是这位读者所需要的. 小 D 刚刚当上图书馆的管理员,她知道图书馆里所有书的图书编码,她请你帮她写 一个程序,对于每一位读者,求出他所需要的书中图书编码最小的那本书,如果没有他 需要的书,请输出

洛谷P1124 文件压缩 模拟

洛谷P1124 文件压缩 模拟 1 #include <bits/stdc++.h> 2 #define For(i,j,k) for(int i=j;i<=k;i++) 3 using namespace std ; 4 5 const int N = 10011 ; 6 int n,mid,p ; 7 char s[N] ; 8 int le[N],ri[N],sum[N],ans[N] ; 9 10 inline int read() 11 { 12 int x = 0 , f =

AC日记——神奇的幻方 洛谷 P2615(大模拟)

题目描述 幻方是一种很神奇的N*N矩阵:它由数字1,2,3,……,N*N构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在第一行的中间. 之后,按如下方式从小到大依次填写每个数K(K=2,3,…,N*N): 1.若(K−1)在第一行但不在最后一列,则将K填在最后一行,(K−1)所在列的右一列: 2.若(K−1)在最后一列但不在第一行,则将K填在第一列,(K−1)所在行的上一行: 3.若(K−1)在第一行最后一列,则将K填在(K−1)

【洛谷试炼场】【模拟专题】P1012 拼数

[题目描述] 设有n个正整数(n≤20),将它们联接成一排,组成一个最大的多位整数. 例如:n=3时,3个整数13,312,343联接成的最大整数为:34331213 又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613 [输入格式] 第一行,一个正整数n. 第二行,n个正整数. [输出格式] 一个正整数,表示最大的整数 [输入样例#1] 3 13 312 343 [输出样例#1]34331213 本题思路: 水题.用字符串存储 一个自定义排序搞定:两个字符串在 正着方

洛谷P3759 - [TJOI2017]不勤劳的图书管理员

Portal Description 给出一个\(1..n(n\leq5\times10^4)\)的排列\(\{a_n\}\)和数列\(\{w_n\}(w_i\leq10^5)\),进行\(m(m\leq5\times10^4)\)次操作: 交换\(a_{p_1},a_{p_2}\),并求\(\sum_{i=1}^n \sum_{j=i+1}^n [a_i>a_j](w_{a_i}+w_{a_j})\). Solution 树套树/CDQ分治,想锻炼一下代码能力所以写了树套树. 首先这是一个求逆

洛谷P1290 欧几里德的游戏 数学 博弈论 模拟

洛谷P1290 欧几里德的游戏 数学 博弈论 模拟 这道题我们因为当 x 大于 y 时 你也只能在合法范围 内取 1 个 y 两个 y 也就是说 能取的y大于等于2时,则你本质不同的取法共有两种,此时你必定获胜,因为本质不同,而在最优策略下,则说明胜利者也不同,也就是说这时候你可以决定自己的输赢 ,我们称这种必胜局为 v 局 2.但是如果 v 局后面还有v 局怎么办,这个不必担心,因为先拿到 v局的人,有两种本质不同的取法,也就是说 他可以控制自己下次必定拿到 v 局,这样就 能确保胜利了 所以

洛谷P1449 后缀表达式 栈 模拟 字符串

洛谷P1449 后缀表达式 栈 模拟 字符串 栈模拟一下 碰到 . 如果输入的是数字就把数字放进栈中 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <cstdlib> 5 #include <string> 6 #include <algorithm> 7 #include <iomanip> 8 #include <io

洛谷P1159 排行榜 模拟

洛谷P1159 排行榜 模拟 DOWN的人 正序 排到前面 UP的人 正序 排在后面 然而要注意 SAME 是不变的 所以说SAME 的位置是固定的,这个要特殊做 1 #include <cstdio> 2 #include <cstring> 3 #include <string> 4 #include <iostream> 5 using namespace std ; 6 7 int n,topu,topd ; 8 string up[101],dow

洛谷 模拟城市2.0

一次洛谷月赛的T1,当时因为是信心赛,认为第一题应该不会太难,结果想了很久,直接额放弃正解选择暴力...简直就是巨坑的五维DP...mmd 题目背景 博弈正在机房颓一个叫做<模拟城市2.0>的游戏. 2048年,经过不懈努力,博弈终于被组织委以重任,成为D市市委书记! 他勤学好问,励精图治,很快把D市建设成富强民主文明和谐的美好城市.为了进一步深化发展,他决定在海边建立一个经济开发区. 题目描述 已知开发区的建筑地块是一个n×n的矩形,而开发区可以建造三种建筑: 商业楼,住宅楼,教学楼.这任何