180 条题解
-
0181818181818 LV 10 @ 2008-10-30 19:02:07
1次ac,爽!
-
02008-10-28 22:34:58@
代数求值。把a带成一个固定的数求多项式的值,如果值相等,则认定为等价。为了避免代数出现特殊情况,要多带几组数据,且尽量找质数带入。一般情况下,带4组数据,有3组以上相同则可认为是等价。
我比较懒,只带了两个数,一开始带3和7,竟然错了!后来带了4和7,然后就AC了。
大家不要学我,还是多劳动一下吧 -
02008-10-18 21:53:36@
括号不匹配居然也算……
-
02008-10-10 13:00:28@
怎么就不能多点C的题解啊!全是P的呢??服了!各位C的朋友们多加油呀!
-
02008-10-07 19:06:10@
终于ac了,一个月前就开始编,为了做p1256又把当初编烦了的程序拾起来,啊……
-
02008-10-04 19:42:19@
终于AC了....
这题一年前就觉得不可思议
今天终于完成了 -
02008-10-01 14:40:05@
为什么我只是90分?!
难道真有左右括号不配之说? -
02008-09-30 18:29:25@
第五个点的N答案
(a-6)^10^10
1
((a+6)^2 - 4*a*6))^10^5 +(a -a)^10^10^10^10^10^10竟然有左右括号不匹配的也算! 害惨我了。
-
02008-09-30 15:38:59@
我展开表达式,编得半死。
-
02008-09-30 14:38:34@
program p_4;
var
i,j:integer;
st:array[0..26] of string;
answer:string;
s,n:longint;function jisuan2(str:string):longint;
var
i,j:integer;
l:integer;
str1:string;
a:array[1..100] of longint;
t:array[1..1000] of integer;
k,aa,k1:longint;
s,tt:longint;
begin
l:=length(str);
j:=1;i:=1;
while j1) do s:=s-1;
a:=a*a[tt];
a[tt]:=0;
str1:=copy(str1,1,k1-1)+copy(str1,k1+1,length(str1));
end;s:=a[1];
for i:=1 to l do
begin
if str[i]='+' then s:=s+a[t[i]+1];
if str[i]='-' then s:=s-a[t[i]-1];
end;
jisuan2:=s;
end;function jisuan(str2:string):integer;
var
i,j:integer;
l:integer;
s,t:integer;
k:integer;
str1:string;begin
l:=length(str2);
while pos('(',str2)0 do
begin
for i:=1 to l do
begin
if str2[i]=')' then begin t:=i-1;break; end;
if str2[i]='(' then s:=i+1;
end;
k:=jisuan2(copy(str2,s,t-s+1));
str(k,str1);
str2:=copy(str2,1,s-2)+str1+copy(str2,t+2,length(str2));
end;
jisuan:=jisuan2(str2);
end;function chuli(st:string):string;
var
i:integer;
begin
chuli:=st;
while pos('a',chuli)0 do
begin
i:=pos('a',chuli);
chuli:=copy(chuli,1,i-1)+'1'+copy(chuli,i+1,length(chuli));
end;
end;begin
assign(input,'equal.in');reset(input);
assign(output,'equal.out');rewrite(output);
readln(st[0]);
st[0]:=chuli(st[0]);
s:=jisuan(st[0]);
readln(n);
for i:=1 to n do
begin
readln(st[i]);
st[i]:=chuli(st[i]);
if jisuan(st[i])=s then answer:=answer+char(64+i);
end;
write(answer);
close(input);
close(output);
end. -
02008-09-29 15:04:13@
没看见空格……
-
02008-09-19 13:03:31@
第一次做的时候,不知道没有'/',结果还加上了这个判断,因此没有用mod运算。只得了80分。估计是溢出了,后来发现是没有除法的,就用了mod运算,通过了。
-
02008-09-16 21:34:48@
这题难度不高 但不代表麻烦度不高
-
02008-09-09 20:11:02@
表达式求值
-
02008-09-06 07:25:04@
求求表达式的值,然后取4个数测试,如果通过率在75%以上,则认为该表达式和原表达式相等,则输出。
求表达式的值最好用中缀式变后缀式的方法去做。
详细的在我的Blog..
http://cai0715.sgsg.cn/编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02008-08-23 19:19:12@
我的递归方法。详见http://dfs35123.spaces.live.com/blog/cns!A6CB032EC0980F16!335.entry (附测试数据)
-
02008-08-21 19:07:12@
把表达式展开会累死的,系数都要高精度,不如直接用-5..5的特殊值代入加mod好做
-
02008-08-21 11:01:13@
标准算法似乎是将每个表达式展开比较是否一致
但是这个题目更适合用特殊值法求解
于是这个题目就转化成表达式求值了,比较猛的算法是标号法,即给算式中的每个符号都标号以记录起优先顺序,+-*/乘方这些按数学运算的优先及定义即可,对于括号应该定义为比所有运算都高的优先及,每次遇到'('则将基数+括号的优先及,这样括号里的符号就是基数加本身的优先及,于是,括号内外就有区别了,括号就可以被剥离,剩下只要按优先级运算即可,这里比较方便的方法我推荐使用链表实现,这样可以比较直观的表达两个数运算后成为一个数的过程,另外就是可以用递归,这里注意是逆向思维,每次寻找优先级最低的符号,多个符号优先级相同则找最右边的(因为正常顺序是从左到右),然后分别递归两边的算式,最后算当前符号,具体实现起来有很多技巧 -
02008-08-21 10:59:22@
你可以在这里写上任何有关于此题的程序代码
但规定要求不能贴出你的解题思路或者解题方法等 -
02008-08-12 16:48:46@
还是用实数好
否则又要重新写MOD,还有指数函数
用实数直接+-*,直接**(乘方,MATH库里的)
只不过判断相等的时候稍微写一写
我的误差判定是0.1%
过了