|
$ 举个例子,假如你现在遇到的string-b中的元素分别为 1,2,3,4,*,1,2,3,4;$
在第一层循环时 $ a[1] = b[j] $ 在下一次时 $ a[i] *= 10 $ $ a[i]+=b[j] $ 此时 $ j=1 $ 同时第三次时 此时 $ j=2 $ 同时第四次 此时 $ j=3 $ 注意,后面我们遇到的符号 ,所以我们将保存数据到一个全新的 $ 数组- c $ 中,其中 $ jsq $ 在判断到遇到符号所以jsq在存储完后加上2(一个存上一个数字,一个存这次的符号) 此时 $ jsq=2 $
题目 1425 [NOIP 2013PJ]表达式求值
2025-10-16 19:42:27
|
|
可以不开longlong,我的话是用了一个string,然后先分离,在分离数字时可以搞一个int变量,在遇到数字时直接加上,下一次先乘以10再直接加上就好了,当然这些是扫到数字的时候的时候执行的,当遇到符号的时候就直接让那个int定量加一下,例如刚开始是a[i],扫到符号后下一次遇到数字就存到a[i+1]
|
|
数据太水,虽然我用的long long但实际用int也能过
|
|
错了好久。。。
|
|
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]()
题目 1425 [NOIP 2013PJ]表达式求值
2017-07-08 19:29:56
|
|
字符串长不止1e6
|
|
被标题吸引进来本来想写个递归下降分析然后.....看见只有+ *运算就直接暴力了...(stl大法好
|
|
有问题啊
各路神犇祝我一臂之力 var s:char; lc:boolean; temp,i,cj,ja,he:integer; begin assign(input,'expr.in'); reset(input); {assign(output,'expr.out'); rewrite(output); } cj:=1; while not eof do begin read(s); if (s>='0') and (s<='9') then temp:=(temp*10+(ord(s)-ord('0')))mod 10000 else begin if s='*' then begin cj:=cj*temp; lc:=false; end else begin if lc=true then begin ja:=ja+cj*temp; lc:=false; cj:=1; end else ja:=ja+temp; end; temp:=0; end; end; if lc=true then begin ja:=ja+cj*temp; lc:=false; cj:=1; end else ja:=ja+temp; writeln(50); close(input); close(output); end. |
|
=
题目 1425 [NOIP 2013PJ]表达式求值
2016-04-28 18:25:16
|
|
传说中的龅牙,啊呀呀。
题目 1425 [NOIP 2013PJ]表达式求值
2016-04-28 18:05:08
|
|
从这个角度,刚好可以扒下来楼上的龅牙。{我是那么的英明神武}
题目 1425 [NOIP 2013PJ]表达式求值
2016-04-28 18:02:21
|