题目链接: P5238 整数校验器

题目描述

有些时候需要解决这样一类问题:判断一个数 xxx 是否合法。

xxx 合法当且仅当其满足如下条件:

  • xxx 格式合法,一个格式合法的整数要么是 000,要么由一个可加可不加的负号,一个 111 到 999 之间的数字,和若干个 000 到 999 之间的数字依次连接而成。
  • xxx 在区间 [l,r][l,r][l,r] 范围内(即 l≤x≤rl \le x \le rl≤x≤r)。

你需要实现这样一个校验器,对于给定的 l,rl, rl,r,多次判断 xxx 是否合法。

输入输出格式

输入格式:

第一行三个整数 l,r,Tl,r,Tl,r,T,表示校验器的校验区间为 [l,r][l,r][l,r],以及需要校验的 xxx 的个数。

接下来 TTT 行,每行一个 xxx,表示要校验的数,保证 xxx 长度至少为 111 且仅由 '0'~'9' 及 '-' 构成,且 '-' 只会出现在第一个字符。

输出格式:

输出共 TTT 行,每行一个整数,表示每个 xxx 的校验结果。

校验结果规定如下:000 表示 xxx 合法;111 表示 xxx 格式不合法;222 表示 xxx 格式合法且不在 [l,r][l,r][l,r] 区间内。

输入输出样例

输入样例#1: 复制

-3 3 4
0
00
-0
100000000000000000000

输出样例#1: 复制

0
1
1
2

说明

对于 100%100\%100% 的数据,0≤T≤5120 \le T \le 5120≤T≤512,l,rl,rl,r 在 646464 位有符号整型范围内(即 −263≤l≤r≤263−1-2^{63}\le l \le r \le 2^{63}-1−263≤l≤r≤263−1)。

保证输入文件大小不超过 128KB\text{128KB}128KB。数据在 linux 下生成,没有 '\r' 字符。

以下为部分特殊限制(互不包含):

  • 有 5%5\%5% 的数据,T=0T=0T=0。
  • 有 25%25\%25% 的数据,保证 xxx 格式一定合法。
  • 有 30%30\%30% 的数据,保证如果 xxx 格式合法,那么 xxx 一定在 646464 位有符号整形范围内。

这是道考察字符串的一道题,主要的知识点是字符串转数字,做这道题遇到的问题是,当一个数特别大的时候会超范围,改变量类型也不行。不能完全通过样例。

下面展示字符串转数字的代码:

#include<sstream>//需要引入的头文件
int str2num(string s){int num;stringstream ss(s);ss>>num;return num;
}

以下bug代码:

#include<iostream>
#include<cstdio>
#include <sstream>
#include <string>
using namespace std;
double str2num(string s){double num;stringstream ss(s);ss>>num;return num;
}
int main(){double l,r,T;cin>>l>>r>>T;getchar();for(int i=0;i<T;i++){//cout<<"i="<<i<<endl; string n; getline(cin,n);//getchar();//cout<<"n="<<n<<endl;//cout<<n<<endl;if(n.size()>=2){if(n[0]=='0'){cout<<'1'<<endl;continue;}else if(n[0]=='-'&&n[1]=='0'){cout<<'1'<<endl;continue;             }}//int n;//cout<<"**"<<str2num(n)<<endl;if(str2num(n)>=l&&str2num(n)<=r){cout<<'0'<<endl;}else if(str2num(n)<l||str2num(n)>r){cout<<'2'<<endl;}//cout<<"*****************"<<endl;}
}
/*
-3 3 4
100000000000000000000
0
00
-0
*/

过样例如下:

————————————————————分割线————————————————————————————————

知道问题出在哪了,我少判断一个条件,当输入仅一个“-”的时候也是不合法的

需要添加条件

if(n.size()==1){if(n[0]=='-'){cout<<'1'<<endl;continue;}
}

完整代码如下,但还有一个样例不过:

#include<iostream>
#include<cstdio>
#include <sstream>
#include <string>
using namespace std;
double str2num(string s){double num;stringstream ss(s);ss>>num;return num;
}
int main(){double l,r,T;cin>>l>>r>>T;getchar();for(int i=0;i<T;i++){string n; getline(cin,n);if(n.size()==1){if(n[0]=='-'){cout<<'1'<<endl;continue;}}if(n.size()>=2){if(n[0]=='0'){cout<<'1'<<endl;continue;}else if(n[0]=='-'&&n[1]=='0'){cout<<'1'<<endl;continue;               }}if(str2num(n)>=l&&str2num(n)<=r){cout<<'0'<<endl;}else if(str2num(n)<l||str2num(n)>r){cout<<'2'<<endl;}}
}
/*
-3 3 4
100000000000000000000
0
00
-0
*/

洛谷三月月赛——P5238 整数校验器相关推荐

  1. Luogu 月赛 P5238 整数校验器

    原题传送门 #include <bits/stdc++.h> using namespace std;bool valid(string s) {if (s == "0" ...

  2. 【洛谷月赛】洛谷三月月赛题解报告

    昨天就是洛谷三月月赛,小编考的并不好,才31分,隔壁大佬50分,于是小编决定改一改题,先看第一题: P5238 整数校验器 题目描述 有些时候需要解决这样一类问题:判断一个数 x 是否合法. x 合法 ...

  3. LG P5238 整数校验器

    题目描述 有些时候需要解决这样一类问题:判断一个数\(x\)是否合法. \(x\)合法当且仅当其满足如下条件: \(x\)格式合法,一个格式合法的整数要么是\(0\),要么由一个可加可不加的负号,一个 ...

  4. 洛谷P5238 整数校验器【三月月赛】

    题目描述 https://www.luogu.org/problemnew/show/P5238 主要考虑的有几点 1.单独"-"是不行的,-0类似的也不行,00,01,02这样的 ...

  5. P5238 整数校验器 (3月份洛谷月赛2019)

    比较简单的题,把x按字符串读入,先检查是否合法,如果是一个合法的数,我们再去看是否在范围内,l,r都用字符串读入,然后手写一个字符串比较函数,然后比较是否在范围内就行了,别写出bug就行. 代码如下: ...

  6. 洛谷P5238 整数校验器

    看到没有边读入边处理的,我来水一发 我们要看一下有那些情况是格式不合法的 单独的负号 -0(后面可以有其他数字) 0 +(后面一些数字) 我们用快速读入的方法 读取字符进行处理 还有可能超出范围的 考 ...

  7. 洛谷P4572 [JSOI2013] 哈利波特与死亡圣器

    题目描述 伏地魔的黑暗势力控制了魔法部与霍格沃茨魔法学校之后,哈利与罗恩.赫敏不得不逃亡在外,隐形遁迹.为了完成校长邓布利多的遗命,一直在暗中寻机销毁伏地魔魂器的哈利,意外地获悉如果他们能够拥有传说中 ...

  8. 洛谷 P1356 数列的整数性 解题报告

    P1356 数列的整数性 题目描述 对于任意一个整数数列,我们可以在每两个整数中间任意放一个符号'+'或'-',这样就可以构成一个表达式,也就可以计算出表达式的值.比如,现在有一个整数数列:17,5, ...

  9. 2021年洛谷一月月赛(Div1、Div2,6题)全部题解

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A.P7285 「EZEC-5」修改数组(思维) B.P7286 「EZEC-5」人赢(贪心) ...

最新文章

  1. ICPC2008哈尔滨-A-Array Without Local Maximums
  2. django 1.3下关于静态文件staticfiles的设置
  3. 交换数组中的两个元素
  4. 学不会的JAVA,消不了的忧愁! 1
  5. HBase原理 – snapshot 快照
  6. 参考AWR中的Instance Activity Statistics 计算IOPS
  7. Laravel 深入核心系列教程
  8. POJ3982 序列【大数】
  9. 微软影子系统EWF软件用法及参数描述
  10. 家园2简易地图编辑器
  11. idea无法切换成中文
  12. 【zyc的从零开始】20211012 运算符
  13. 微信php开发 抽奖,微信(weixin)大转盘抽奖页面、数据库以及抽奖算法(PHP源码......
  14. Matplotlib contours 等高线图
  15. TeamViewer 氪金和不氪金免费版有什么区别?
  16. 刀片服务器怎么连接显示屏,CMC是如何连接的 刀片管理模块的秘密
  17. Java基础知识每日总结(19)---Java输入输出流、文件、递归
  18. MT4安卓版官网下载
  19. ASEMI整流桥ABS10的参数怎么看,ABS10的作用是什么?
  20. 如何在ps添加箭头_Photoshop怎么画箭头 三种方法任你选择

热门文章

  1. 自律是什么?就是对自己狠一点,再狠一点,然后你人生的层次就……
  2. 学习数据可视化,读哪本书比较好?
  3. 如何从缓存白嫖网易云音乐
  4. 马化腾“扛不住了”?微信“跟风”推出新功能,像极了当年的QQ
  5. STM32 GPIOx_CRL/GPIOx_CRH 寄存器
  6. 大学可以这样读——我的心路历程和一点思考
  7. Launcher 快捷方式、文件夹等的默认设置
  8. 刘强东与章泽天共同成立新公司:分别持股99%、1%
  9. Comet实现的新选择
  10. 好不容易进了洞房,解不开新娘的衣服,新郎一怒走天涯,人间惨剧啊!