JZOJ 5820. 【NOIP提高A组模拟2018.8.16】 非法输入
Description
在算法竞赛中,题目一般保证了输入数据的合法性。然而在工程开发中,我们往往不期望程 序得到的输入都是合法的。
D 君正忙着向校内 OJ 添加题目,在写了第 233 个 val.cpp 之后,她的头脑中涌现出了这样 的想法。于是她决定出一道不需要写 val.cpp 的题。
输入两个整数,你需要做的就是输出她们的和。
Input
第一行一个正整数 T。
接下来 T 行,每行代表一组数据。
一组合法的数据包含由一个空格隔开的两个合法的十进制整数,行首和行尾不包含任何多余 的字符。
一个合法的十进制整数要么是 0,要么由一个可选的负号,一个 1 到 9 之间的数字,和若干 个 0 到 9 之间的数字顺序连接而成,并且这两个数字均在区间 [−2^31 , 2^31) 之内。
一组不合法的数据是一个不匹配以上规则的字符串。
Output
对于每组数据,如果该数据是合法的请输出一行一个整数代表答案,否则请输出 Input Error。
Sample Input
6
1 1
-1 -1
1 1
asdf
2147483648 0
Sample Output
2
-2
Input Error
Input Error
Input Error
Input Error
Data Constraint
Solution
纯模拟题。。
但是有很多细节,比赛时AC的人不多。。
我就少考虑了两个地方:读入三个数,符号后面没有数字。
Code
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cctype>
using namespace std;
typedef long long LL;
const int N=5e4;
int T;
LL up,low;
char s[N];
int main()
{freopen("aplusb.in","r",stdin);freopen("aplusb.out","w",stdout);scanf("%d\n",&T);up=1LL<<31,low=-up;while(T--){cin.getline(s,N);int n=strlen(s);if(!isdigit(s[0]) && s[0]!='-'){puts("Input Error");continue;}if(!isdigit(s[n-1])){puts("Input Error");continue;}int f1=0,f2=0;if(s[0]=='-') f1=1;int l1=0,l2=0;for(int i=f1;i<n;i++)if(isdigit(s[i])) l1++; else break;if(l1>10 || s[f1+l1]!=' ' || !l1){puts("Input Error");continue;}if(!isdigit(s[f1+l1+1]) && s[f1+l1+1]!='-'){puts("Input Error");continue;}if(s[f1+l1+1]=='-') f2=1;int pos=-1;for(int i=f1+l1+1+f2;i<n;i++)if(isdigit(s[i])) l2++; else{pos=i;break;}if(l2>10 || pos>=0 && pos<n-1 || !l2){puts("Input Error");continue;}if(l1==1 && s[f1]=='0' && f1){puts("Input Error");continue;}if(s[f1]=='0' && l1>1){puts("Input Error");continue;}if(l2==1 && s[f1+l1+1+f2]=='0' && f2){puts("Input Error");continue;}if(s[f1+l1+1+f2]=='0' && l2>1){puts("Input Error");continue;}LL x=0,y=0;for(int i=f1;i<f1+l1;i++) x=x*10+s[i]-'0';for(int i=f1+l1+1+f2;i<n;i++) y=y*10+s[i]-'0';if(f1) x=-x;if(f2) y=-y;if(x<low || x>=up){puts("Input Error");continue;}if(y<low || y>=up){puts("Input Error");continue;}printf("%lld\n",x+y);}return 0;
}
JZOJ 5820. 【NOIP提高A组模拟2018.8.16】 非法输入相关推荐
- JZOJ 5814. 【NOIP提高A组模拟2018.8.14】 树
梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中等概率地选择一条走过去, ...
- 5814. 【NOIP提高A组模拟2018.8.14】 树(期望 + 倍增)
5814. [NOIP提高A组模拟2018.8.14] 树 Problem 给定一棵nnn个点的树,m" role="presentation">mmm次询问,每次 ...
- jzoj 5814. 【NOIP提高A组模拟2018.8.14】 树(期望)
Description 梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到 点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中 ...
- jzoj 5814. 【NOIP提高A组模拟2018.8.14】树 dp+lca
Description 梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到 点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中 ...
- 5817. 【NOIP提高A组模拟2018.8.15】 抄代码
Description J 君是机房的红太阳,每次模拟她总是 AK 虐场.然而在 NOIP2117 中,居然出现了另一位 AK 的选手 C 君! 这引起了组委会的怀疑,组委会认为 C 君有抄袭 J 君 ...
- 5819. 【NOIP提高A组模拟2018.8.15】 大逃杀
Description 自从 Y 君退役之后,她就迷上了吃鸡,于是她决定出一道吃鸡的题. Y 君将地图上的所有地点标号为 1 到 n,地图中有 n − 1 条双向道路连接这些点,通过一条 双向道路需要 ...
- 5778. 【NOIP提高A组模拟2018.8.8】没有硝烟的战争
Description 被污染的灰灰草原上有羊和狼.有N只动物围成一圈,每只动物是羊或狼. 该游戏从其中的一只动物开始,报出[1,K]区间的整数,若上一只动物报出的数是x,下一只动物可以报[x+1,x ...
- jzoj5814 【NOIP提高A组模拟2018.8.14】 树 (树上期望,递归法列方程)
题面 梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到 点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中等概率地 选择一条 ...
- JZOJ5814. 【NOIP提高A组模拟2018.8.14】 树
Description 梦游中的你来到了一棵 N 个节点的树上. 你一共做了 Q 个梦, 每个梦需要你从点 u 走到 点 v 之后才能苏醒, 由于你正在梦游, 所以每到一个节点后,你会在它连出去的边中 ...
最新文章
- (转载)机器学习知识点(十二)坐标下降法(Coordinate descent)
- windows下 网络命令(待续)
- javaweb学习总结(七):HttpServletResponse对象(一)
- Android事件处理之多点触摸与手势识别
- nginx+keepalived高可用性负载均衡
- webrtp官方demo运行
- 带你了解Typescript的14个基础语法
- 中国内镜下血管采集市场趋势报告、技术动态创新及市场预测
- blog推荐 - Sources of Insight
- 第五章 字符串字面量---一个特殊的数组
- 【笔记本Windows的两个ctrl键失效解决办法大全解】
- 新手焊接电路板_简单电路板的手工焊接步骤解析
- Pyton IO编程
- Android Studio中的keystore
- 第十章:项目沟通管理 - (10.0 项目沟通管理是什么)
- 如何打造自己有创意的平面设计灵魂作品
- [点分树] BZOJ 4372: 烁烁的游戏
- XML(3)XDocument与XmlDocument递归读取xml文件
- 微信公众号群发图文消息
- DOA_GAN的近似复现
热门文章
- Go 语言 练习 聊天室 01
- 高性能计算的线程模型:Pthreads 还是 OpenMP
- CentOS6 启动流程图文解剖 + 引导文件损坏处理方法
- 【笔记】基于Faster R-CNN的除草机器人杂草识别算法
- [云炬创业基础笔记]第九章企业的法律形态测试2
- 科大星云诗社动态20210417
- 科大星云诗社动态20210525
- Spark写Redis+Spark资源配置总结
- Python1:if / while / for...in / break /continue
- 离散时间系统的相位响应