洛谷三月月赛——P5238 整数校验器
题目链接: 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 整数校验器相关推荐
- Luogu 月赛 P5238 整数校验器
原题传送门 #include <bits/stdc++.h> using namespace std;bool valid(string s) {if (s == "0" ...
- 【洛谷月赛】洛谷三月月赛题解报告
昨天就是洛谷三月月赛,小编考的并不好,才31分,隔壁大佬50分,于是小编决定改一改题,先看第一题: P5238 整数校验器 题目描述 有些时候需要解决这样一类问题:判断一个数 x 是否合法. x 合法 ...
- LG P5238 整数校验器
题目描述 有些时候需要解决这样一类问题:判断一个数\(x\)是否合法. \(x\)合法当且仅当其满足如下条件: \(x\)格式合法,一个格式合法的整数要么是\(0\),要么由一个可加可不加的负号,一个 ...
- 洛谷P5238 整数校验器【三月月赛】
题目描述 https://www.luogu.org/problemnew/show/P5238 主要考虑的有几点 1.单独"-"是不行的,-0类似的也不行,00,01,02这样的 ...
- P5238 整数校验器 (3月份洛谷月赛2019)
比较简单的题,把x按字符串读入,先检查是否合法,如果是一个合法的数,我们再去看是否在范围内,l,r都用字符串读入,然后手写一个字符串比较函数,然后比较是否在范围内就行了,别写出bug就行. 代码如下: ...
- 洛谷P5238 整数校验器
看到没有边读入边处理的,我来水一发 我们要看一下有那些情况是格式不合法的 单独的负号 -0(后面可以有其他数字) 0 +(后面一些数字) 我们用快速读入的方法 读取字符进行处理 还有可能超出范围的 考 ...
- 洛谷P4572 [JSOI2013] 哈利波特与死亡圣器
题目描述 伏地魔的黑暗势力控制了魔法部与霍格沃茨魔法学校之后,哈利与罗恩.赫敏不得不逃亡在外,隐形遁迹.为了完成校长邓布利多的遗命,一直在暗中寻机销毁伏地魔魂器的哈利,意外地获悉如果他们能够拥有传说中 ...
- 洛谷 P1356 数列的整数性 解题报告
P1356 数列的整数性 题目描述 对于任意一个整数数列,我们可以在每两个整数中间任意放一个符号'+'或'-',这样就可以构成一个表达式,也就可以计算出表达式的值.比如,现在有一个整数数列:17,5, ...
- 2021年洛谷一月月赛(Div1、Div2,6题)全部题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 A.P7285 「EZEC-5」修改数组(思维) B.P7286 「EZEC-5」人赢(贪心) ...
最新文章
- ICPC2008哈尔滨-A-Array Without Local Maximums
- django 1.3下关于静态文件staticfiles的设置
- 交换数组中的两个元素
- 学不会的JAVA,消不了的忧愁! 1
- HBase原理 – snapshot 快照
- 参考AWR中的Instance Activity Statistics 计算IOPS
- Laravel 深入核心系列教程
- POJ3982 序列【大数】
- 微软影子系统EWF软件用法及参数描述
- 家园2简易地图编辑器
- idea无法切换成中文
- 【zyc的从零开始】20211012 运算符
- 微信php开发 抽奖,微信(weixin)大转盘抽奖页面、数据库以及抽奖算法(PHP源码......
- Matplotlib contours 等高线图
- TeamViewer 氪金和不氪金免费版有什么区别?
- 刀片服务器怎么连接显示屏,CMC是如何连接的 刀片管理模块的秘密
- Java基础知识每日总结(19)---Java输入输出流、文件、递归
- MT4安卓版官网下载
- ASEMI整流桥ABS10的参数怎么看,ABS10的作用是什么?
- 如何在ps添加箭头_Photoshop怎么画箭头 三种方法任你选择
热门文章
- 自律是什么?就是对自己狠一点,再狠一点,然后你人生的层次就……
- 学习数据可视化,读哪本书比较好?
- 如何从缓存白嫖网易云音乐
- 马化腾“扛不住了”?微信“跟风”推出新功能,像极了当年的QQ
- STM32 GPIOx_CRL/GPIOx_CRH 寄存器
- 大学可以这样读——我的心路历程和一点思考
- Launcher 快捷方式、文件夹等的默认设置
- 刘强东与章泽天共同成立新公司:分别持股99%、1%
- Comet实现的新选择
- 好不容易进了洞房,解不开新娘的衣服,新郎一怒走天涯,人间惨剧啊!