noip2000-计算器的改良 2008.11.5
2016-02-05 13:11
232 查看
noip2000-计算器的改良 2008.11.5
发现了一个很神奇的bug
write(0/-1) 的结果是-0,前面居然有个负号,这是一个漏洞,注意啊!坑人!
发现了一个很神奇的bug
write(0/-1) 的结果是-0,前面居然有个负号,这是一个漏洞,注意啊!坑人!
program computer; const fin='computer.in';fout='computer.out'; var m,x,y,i,j,lx1,lx2:longint; xx,x1,x2:string; f1,f2:text; h:char; procedure deal(g:string;p1,p2:longint); var l,f,code,d:longint;t,c:string; begin l:=length(g);t:='';c:='+'; i:=0; for i:=1 to l do begin if (g[i]>='0') and (g[i]<='9') then t:=t+g[i]; if (g[i]='-') or (g[i]='+') then begin case g[i-1]of '0'..'9': begin val(t,f,code); if c='-' then d:=-1 else d:=1; y:=y+f*p2*d;t:=''; end; 'a'..'z': begin val(t,f,code);if t='' then f:=1; if c='-' then d:=-1 else d:=1; x:=x+p1*f*d; t:='';h:=g[i-1]; end; end;{case} c:=g[i]; end; end; end; procedure doit; begin assign(f1,fin);reset(f1); assign(f2,fout);rewrite(f2); read(f1,xx); m:=pos('=',xx); x1:=copy(xx,1,m-1); x2:=copy(xx,m+1,length(xx)-m); x1:=x1+'+'; x2:=x2+'+'; deal(x1,1,-1); deal(x2,-1,1); if y=0 then writeln(f2,h,'=','0.000') else writeln(f2,h,'=',y/x:0:3); close(f1);close(f2); end; begin doit; end.
相关文章推荐
- 标题就叫2015年上班的最后一天啦
- 扩展windows2003 系统分区
- noip2000-单词接龙2008.11.5
- BZOJ1099 POI2007 树Drz
- 狼、狗、王八都挣发了,而羊穷得连崽也不敢生
- Floodlight之 FloodlightContextStore 数据结构
- 【项目管理】推荐一个轻量级的软件项目管理工具
- 判断java对象是否还“活着”
- HDU 4635 Strongly connected(强连通分量)
- 基于Spark-Streaming滑动窗口实现——实时排名与统计
- noip2007矩阵取数游戏 2008.11.5
- 第三章 JVM内存回收区域+对象存活的判断+引用类型+垃圾回收线程
- iOS开发——UILabel自适应较多的文本
- 【树】【独立集】【动态规划】[BZOJ1040][ZJOI2008]骑士
- 单机游戏魔塔学院的安卓版本打包经验小结(二)
- HDU 5274(树链剖分)
- CSS3:backgroud-size和background-origin的使用方法
- 图(最小生成树)MST 1
- Xcode下搭建OpenCV 3.1
- 详解iOS7原生二维码,条码扫描