18 条题解
-
0fenghao LV 10 @ 2009-10-24 00:59:17
冒着被封号的危险,我来晒两大段程序吧:
第一段是这题的递归写法:
type rec=record
unknow:string;
value:longint;
end;
var cover:array[1..50] of rec;
s,ts:string;
n,i,k,total,c:longint;
function count(c:char; t:longint):longint;
begin
t:=t*10;
if c='+' then exit(1+t) else
if c='-' then exit(1+t) else
if c='*' then exit(3+t) else
if c='/' then exit(3+t);
end;
function find(s:string):longint;
var i:longint;
begin
while s[1]='0' do delete(s,1,1);
for i:=1 to total do
if cover[i].unknow=s then exit(cover[i].value);
end;
procedure block(var s:string);
var i,j,len:longint; flag:boolean;
begin
len:=length(s); j:=0;
if (s[1]='(')and(s[len]=')') then
begin
for i:=1 to len do
begin
if s[i]='(' then inc(j) else
if s[i]=')' then dec(j);
if (j=0)and(ilen) then exit;
end;
delete(s,1,1);
delete(s,length(s),1);
end;
end;
function cal(s:string):longint;
var i,len,c,t,delta,min,cut,temp:longint;
begin
block(s);
if s[1]'(' then s:='0'+s;
len:=length(s);
temp:=0;
val(s,temp,c);
if c0 then
begin
min:=maxint; cut:=0; delta:=0;
for i:=1 to len do
begin
if s[i]='(' then inc(delta) else
if s[i]=')' then dec(delta) else
if s[i] in ['+','-','*','/'] then
begin
t:=count(s[i],delta);
if t='0' do
begin
t:=t+st[a];
inc(a);
end;
for i:=1 to n do
if v[i].s=t then exit(v[i].c);
val(t,find);
end;
function cal(a:char):longint;
begin
case a of
'+': exit(1);
'-': exit(2);
'*': exit(3);
'/': exit(4);
'(': exit(5);
')': exit(6);
'#': exit(7);
end;
end;
begin
readln(t);
for m:=1 to t do
begin
readln(st);
readln(n);
for i:=1 to n do
begin
readln(v[i].s);
k:=pos('=',v[i].s);
val(copy(v[i].s,k+1,length(v[i].s)-k),v[i].c);
delete(v[i].s,k-1,length(v[i].s)-k+2);
end;
fillchar(num,sizeof(num),0);
fillchar(opt,sizeof(opt),#0);
st:=st+'#';
i:=1;
while i='0' then
begin
inc(p2);
num[p2]:=find(i);
end else
begin
case f[cal(opt[p1]),cal(now)] of
'>':
begin
num[p2-1]:=count(num[p2-1],num[p2],opt[p1]);
dec(p2); dec(p1);
end;
' -
02009-10-20 15:18:45@
Flag
题号 P1256
类型(?) 字符串处理
通过 55人
提交 555次
55 555 囧~~~~ -
02009-07-30 16:24:42@
错把字符串当字符,苦调1小时终发现....
-
02009-07-30 14:26:58@
data无误
用一个stack维护即可 -
02009-07-03 18:55:30@
是不是无论输出什么,都会显示:
答案错误:标准行输出 Scen...
错误行输出 2888
?????
每次我都会变一下输出的第一行,但回应我的却总是这两行.... -
02009-04-18 21:59:18@
编译通过...
├ 测试数据 01:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
啊?????????????????
一次AC!!! -
02009-01-12 10:40:41@
const
xiaoxie=['a'..'z'];
fuhao=['-','=','+'];
//>
function panduan(st:string):boolean;
var
i:longint;
begin
for i:=1 to length(st) do
if st[i] in xiaoxie
then exit(true);
exit(false);
end;
//>
procedure init;
begin
readln(a);
step1:=0;
step2:=1;
d:=pos('=',a);
end;
//
begin
init;
work;
write(ans);
end. -
02008-10-23 19:06:59@
实在是好事多磨,多少天了,我终于把这题干掉了!
___|\__|\__|\__|\__|\__|\__|__
| |
| |
| A C |
| |
| |
| 300 |
| |
| |
| 题 |
| |
| 纪 |
| |
| 念 |
| |
| 碑 |
| |
___|\__||\__|\__|\__|\__|\__|\__|\__|__|___|\_|
| |
| |
| 流芳百世 永垂不朽 |
| |
|___|\__|\__|\__|\__|\__|\__|\__|\__|\__|\__|\___|_| -
02008-10-07 20:09:37@
其实没什么可注意的,把p1003一改就AC了,就是不知道为什么通过率这么低。难道都像我一样复制样例输出的"Scenario #1:"时候把中间那个看不见的‘?’给复制上了……
-
02008-10-04 22:50:11@
终于过了...
用的noipTG05最后那题 的时候写的表达式求值模块
然后所有的 A = 2 之类的可以看作字符串替代
当然,要先按长度从大到小排序
因为
I = 2
In = 3
前者可能就把字符串给替代了. -
02007-11-13 10:59:15@
理论上说...
数据是对的....pzy3303说的情况是不需要考虑的..
-
02007-11-06 15:40:43@
数据错了吧。
-
02007-09-18 21:44:42@
终于AC了,数据有一个问题
题目中:“字符串 = 数字”的格式给出每个字符串所代表的数字。
但会出现表达式,要特殊处理下
-
02007-07-25 18:01:52@
样例中应该是英文的 ':' 而不是中文的 ':'
然后正常做即可,处理负数的时候我是在负数前面统一加0处理 -
02006-10-10 13:18:09@
hoooooooooo~ 好恶心啊
-
02006-10-08 21:02:08@
哈哈哈,今天运气好,我一个小垃圾居然捡到一个第一AC,提示一下,这题数据貌似有问题,可能表达式比想象的要长一点,为此tle了好久
-
02006-10-08 11:58:59@
按理说是容易题...
-
02006-10-07 11:38:09@
UP一下,第一个到的
- 1