57 条题解
-
0xiaoX LV 10 @ 2010-04-13 22:47:09
求根公式中 / 打成 * 居然能 过 7 组 , 汗……
-
02009-11-08 21:59:42@
天哪,就没有少一点的程序吗……到时候比赛遇到这种问题要花多少时间啊……TAT(一个懒人的唠叨)
-
02009-11-06 13:33:45@
AC 了
刚开始时逐位处理,后来有时用for,正负号问题明显好解决le
刚开始写了两个过程cal1,cal2,结果发现cal1对,cal2错,合并为calstr就OKl
program p1646;
type x=array[1..2] of longint;
var str1,str2,str:string;
k,a1,b1,c1,a2,b2,c2:longint;
a,b,c:x;
function firstcx(str:string;k:integer):boolean;
var i:integer;
begin
for i:=k downto 1 do
if (str[i]='x') or (str[i]='+') or (str[i]='-') then exit(false);
exit(true);
end;
function firstc(str:string):boolean;
var i:longint;
begin
if str[1]='-' then i:=2 else i:=1;
while (str[i]'+') and (str[i]'-') and (i0 then writeln(x1:0:5,' ',x2:0:5);
if a=3 then if (str='x') or ((str='x') and (str='^')) then
else for j:=i-1 downto 1 do
if str[j]='+' then begin c[p]:=c[p]+xs; xs:=0;break; end
else if str[j]='-' then begin c[p]:=c[p]-xs; xs:=0;break; end;
end;
end;
inc(i);
end;
if xs0 then
begin
for j:=k-1 downto 1 do
if str[j]='+' then begin c[p]:=c[p]+xs; xs:=0; break; end
else if str[j]='-' then begin c[p]:=c[p]-xs; xs:=0; break; end;
end;
end;
begin
init;
calstr(str1,1); calstr(str2,2);
if (a[1]-a[2]=0) and (b[1]-b[2]=0) and (c[1]-c[2]=0) then begin writeln('181818181818'); halt; end;
if (a[1]-a[2]=0) and (b[1]-b[2]=0) and (c[1]-c[2]0) then begin writeln(0); halt; end;
calroot(a[1]-a[2],b[1]-b[2],c[1]-c[2]);
end. -
02009-11-02 22:03:26@
对于提交次数,我不想说什么了。。。
看M.j.1646的提交次数。。。
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|-
Program P1646_NewVersion;
Var i,j,k,l,n:Longint;
a1,a2,a3,x1,x2,x3:Longint;
a,b:string;
Procedure PutOut;
Var delta,ans1,ans2,tmp:real;
Begin
if a10 then
begin
delta:=sqr(a2)-4*a1*a3;
if delta>0 then
begin
ans1:=(-a2+sqrt(delta))/(2*a1);
ans2:=(-a2-sqrt(delta))/(2*a1);
if ans1>ans2 then
begin
tmp:=ans1; ans1:=ans2; ans2:=tmp;
end;
writeln(2);
if ans1=0 then ans1:=0;
write(ans1:0:5,' ');
if ans2=0 then ans2:=0;
writeln(ans2:0:5);
end
else
if delta=0 then
begin
ans1:=-a2/(2*a1);
writeln(1);
if ans1=0 then ans1:=0;
writeln(ans1:0:5);
end
else
writeln(0);
end
else
begin
writeln(1);
ans1:=-a3/a2;
if ans1=0 then ans1:=0;
writeln(ans1:0:5);
end;
End;
Procedure Deal;
Var s1,s2:string;
i1,i2,j1,j2:longint;
Begin
x1:=0; x2:=0; x3:=0;
if b[1]'-' then b:='+'+b;
//Deal with X^2;
while pos('x^2',b)>0 do
begin
j:=pos('x^2',b);
if j=0 then break;
for j1:=j-1 downto 1 do
if (b[j1]='-') or (b[j1]='+') then break;
s1:=copy(b,j1+1,j-(j1+1));
if s1='' then i1:=1 else val(s1,i1);
if b[j1]='-' then x1:=x1-i1 else x1:=x1+i1;
delete(b,j1,j+2-j1+1);
end;
//Deal with X^1;
while pos('x',b)>0 do
begin
j:=pos('x',b);
if j=0 then break;
for j1:=j-1 downto 1 do
if (b[j1]='-') or (b[j1]='+') then break;
s1:=copy(b,j1+1,j-(j1+1));
if s1='' then i1:=1 else val(s1,i1);
if b[j1]='-' then x2:=x2-i1 else x2:=x2+i1;
delete(b,j1,j-j1+1);
end;
//Deal with X^0;
begin
b:=b+'-';
j:=length(b);while j>1 do
begin
j:=length(b);
for j1:=2 to j do
if ((b[j1]='+') or (b[j1]='-')) then break;
s1:=copy(b,2,j1-2);
val(s1,i1);
if b[1]='+' then x3:=x3+i1 else x3:=x3-i1;
delete(b,1,j1-1);
end;
end;End;
Begin
Readln(a);
i:=pos('=',a);
b:=copy(a,1,i-1);
delete(a,1,i);
Deal;
a1:=x1; a2:=x2; a3:=x3;
b:=a;
deal;
dec(a1,x1); dec(a2,x2); dec(a3,x3);
if ((a1=0) and (a2=0) and (a3=0)) then writeln('181818181818') else
if ((a1=0) and (a2=0) and (a30)) then writeln('0') else
PutOut;
End. -
02009-11-02 19:08:10@
编译通过...
├ 测试数据 01:运行超时...
├ 测试数据 02:运行超时...
├ 测试数据 03:运行超时...
├ 测试数据 04:运行超时...
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:运行超时...
├ 测试数据 07:运行超时...
├ 测试数据 08:运行超时...
├ 测试数据 09:运行超时...
├ 测试数据 10:运行超时...
---|---|---|---|---|---|---|---|-
Unaccepted 有效得分:10 有效耗时:0ms为什么超时阿 救命啊 写了1个多少小时阿
var i,j,k,a,b,c,d,e1,e2,js,s11:longint;
s,s1:string;
x1,x2,de:real;
begin
readln(s);
d:=pos('=',s);
js:=length(s);
a:=0; b:=0;c:=0;
while ((d>1)and(pos('x',s)>0)) do
begin
e2:=pos('x^2',s);
if (e20) then
begin
s1:='';
for i:=e2-1 downto e2-4 do
begin
if (s[i]>='0')and(s[i]='0')and(s[i]1 then
begin
for i:=d-1 downto 1 do
begin
if (s[i]='-')or(s[i]='+') then
begin
s11:=0;
val(copy(s,i+1,d-i-1),s11);
if s[i]='-'then c:=c-s11 else c:=c+s11;
delete(s,i,d-i);
end;
end;
if pos('=',s)>1 then
begin
val(copy(s,1,d-1),s11);
c:=c+s11;
delete(s,1,d-1);
end;
end;
delete(s,1,1);
d:=length(s);
while ((pos('x',s)>0) )do
begin
e2:=pos('x^2',s);
if (e20) then
begin
s1:='';
for i:=e2-1 downto e2-4 do
begin
if (s[i]>='0')and(s[i]='0')and(s[i]0 then
begin
for i:=d downto 1 do
begin
if (s[i]='-')or(s[i]='+') then
begin
s11:=0;
val(copy(s,i+1,d-i),s11);
if s[i]='-'then c:=c+s11 else c:=c-s11;
delete(s,i,d-i+1);
end;
end;
if pos('=',s)>1 then
begin
val(s,s11);
c:=c-s11;
s:='';
end;
end;
if (a=0)and(b=0)then writeln('181818181818') else
if (a=0)and(b0)then
begin
writeln('1');
x1:=(-1*c)/b;
if x1=0 then writeln(0) else writeln(x1:0:5);
end else
if (a0)then
begin
de:=b*b-4*a*c;
if de>=0 then
begin
x1:=(-1*b-sqrt(de))/(2*a);
x2:=(-1*b+sqrt(de))/(2*a);
if x1x2 then
begin
writeln(2);
if x1=0 then write(0,' ')else write(x1:0:5,' ');
if x2=0 then writeln(0) else writeln(x2:0:5);
end else
if x1=x2 then
begin
writeln(1);
if x1=0 then writeln(0) else writeln(x1:0:5);
end;
end else writeln(0);end;
end. -
02009-10-31 21:49:21@
祖坟冒青烟了 AC了!!!!!!
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
R1679492 Accepted 100 From andyxxsd-
P1646 FPC Vijos Sunny 2009-10-31 21:47:14
R1679426 Unaccepted 0 From andyxxsd-
P1646 FPC Vijos Easy 2009-10-31 21:38:31
R1679377 Unaccepted 20 From andyxxsd-
P1646 FPC Vijos Easy 2009-10-31 21:31:40
R1679362 Unaccepted 90 From andyxxsd-
P1646 FPC Vijos Easy 2009-10-31 21:30:17
R1679345 Unaccepted 90 From andyxxsd-
P1646 FPC Evolution SmdCn 2009-10-31 21:27:53
R1679333 Unaccepted 80 From andyxxsd-
P1646 FPC Vijos Easy 2009-10-31 21:26:59
R1679259 Unaccepted 80 From andyxxsd-
P1646 FPC Vijos Sunny 2009-10-31 21:18:59
R1679215 Unaccepted 60 From andyxxsd-
P1646 FPC Evolution SmdCn 2009-10-31 21:14:21
R1679188 Unaccepted 50 From andyxxsd-
P1646 FPC Evolution SmdCn 2009-10-31 21:11:06
R1679136 Unaccepted 60 From andyxxsd-
P1646 FPC Vijos Easy 2009-10-31 21:04:56
R1679091 Unaccepted 30 From andyxxsd-
P1646 FPC Victoria Roo 2009-10-31 20:59:50
R1679057 Unaccepted 20 From andyxxsd-
P1646 FPC Vijos Sunny 2009-10-31 20:56:17
R1679024 Unaccepted 10 From andyxxsd-
P1646 FPC Victoria Roo 2009-10-31 20:51:49
R1678978 Unaccepted 0 From andyxxsd-
P1646 FPC Edogawa Conan 2009-10-31 20:45:30
R1678914 Unaccepted 0 From andyxxsd-
P1646 FPC Vijos Sunny 2009-10-31 20:37:35
15次+1个小时=AC T_T
---|---|---|---|---|---|---|---|---|---|---|---|---|-
program p1646;
var z,f,i,j,sj,kx,k,k3,l:longint;
sjx,a,b,c,k1,k2:real;
s:string;
kao:boolean;
begin
readln(s);
l:=length(s);z:=1;f:=-1;
if s[pos('=',s)+1]'-' then s:=copy(s,1,pos('=',s))+'+'+copy(s,pos('=',s)+1,l);
if s[1]'-' then s:='+'+s;
l:=length(s);i:=l;
while i>0 do
begin
if s[i]='=' then begin z:=-1;f:=1;end;
if (s[i]='+')or(s[i]='-') then
begin
j:=i+1;
while (j='0')and(s[j]0)and((s[j]>='0')and(s[j]0)and((s[j]>='0')and(s[j]0 then writeln(2);
if sjx -
02009-10-25 11:27:17@
好繁
-
02009-10-19 13:16:55@
第一次 愣是没看到有种情况18181818
第二次 没有看到二次一次项系数均为0,常数项不为0的情况
第三次 没看到二次项系数为1的情况前两种情况会导致207错误
---|---|---|--就这样,我的通过率又下降了
Ac的程序输出部分
delta:=X1*X1-4*X2*Cs;
if (x2=0)and(x10) then
begin
writeln(1);
writeln(-cs/x1:0:5);
end else
if (x2=0)and(x1=0)and(Cs0) then writeln(0) else
if (x2=0)and(x1=0)and(Cs=0) then writeln(181818181818) else
if delta -
02009-10-06 21:28:55@
字符串处理,以及初一的数学知识~~
这里不多说,字符串处理要小心,我就是因为这样提交了N次,ac率直线下降..
注意一些问题:
如果是p的话,real的0保留5位小数点可能会输出-0.00000,所以在结果是0的时候要注意处理。楼上的几位都是将结果重新赋为0,我是直接write('0.00000')。
另外,a=0&&b=0时要注意,若c0,无解,若c=0,无限解
许多人90分就是忘了1=2时无解
~~~~(>_ -
02009-10-02 14:36:36@
化简:
//等号右面系数为正
//从后往前扫串
//置空临时串
//不含符号读一项
//若没有系数,补上“1”
//读当前项符号
//如果是常数项
//累计常数项
//如果是一次项
//累计一次项
//否则是二次项
//累计二次项
//若等号右边读完
//系数变为负//化简得系数
//如果是二次方程
//如果delta -
02009-09-27 13:18:56@
字符串处理。。。。。。细节活 O.O
-
02009-09-24 23:00:09@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms
终于ac!
此题要考虑的细节很多,一不小心就做错 -
02009-09-20 21:47:21@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms第175人,呜呜。。。
-
02009-09-18 22:16:07@
交了2次AC
第一次把sqrt(round(b))打成了
round(sqrt(b)),
搞到最后两个数据不够精确!!~~~~var
s:string;
i,j,k,m,n,num,a,b,c,p,g,new,deta:longint;
gen1,gen2:real;
begin
readln(s);
s:=s+'+0';
a:=0; b:=0; c:=0; g:=1;
p:=1; new:=-1;
while p0 then
begin
if new-1 then
begin
new:=new*g;
c:=c+new;
new:=-1;
end;
if s[p]='+' then g:=1;
if s[p]='-' then g:=-1;
inc(p);
end
else if pos(s[p],'1234567890')>0 then
begin
if new=-1 then new:=0;
new:=new*10+ord(s[p])-48;
inc(p);
end
else if s[p]='x' then
begin
if new=-1 then new:=1;
inc(p);
new:=new*g;
if s[p]='^' then
begin
a:=a+new;
new:=-1;
p:=p+2;
end
else
begin
b:=b+new;
new:=-1;
end;
end
else
begin
if new-1 then
begin
new:=new*g;
c:=c+new;
new:=-1;
end;
a:=a*-1;
b:=b*-1;
c:=c*-1;
g:=1;
inc(p);
end;
end;
a:=a*-1;
b:=b*-1;
c:=c*-1;
if a0 then
begin
deta:=b*b-4*a*c;
if deta>0 then
begin
writeln(2);
gen1:=(-b+sqrt(round(deta))) / (2*a);
gen2:=(-b-sqrt(round(deta))) / (2*a);
if gen2 -
02009-09-16 13:23:02@
交了3次才AC
做的时候有几个惨痛的经验:
1。对于系数a,b,c不同情况的分类做的不完善
2。在等号后面的那一个项没有处理好符号
3.没有看到两个解要先大后小,而且当root1=0时writeln(root1:0:5)会输出科学记数法。
贴一部分代码:
procedure checkroot;
begin
delta:=(b*b)-(4*a*c);
if a0 then //是否一元二次方程
begin
if delta>0 then rootnum:=2;//两个解
if delta=0 then rootnum:=1;//一个解
if delta -
02009-09-12 15:23:50@
纪念我的第一次~~~~
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms -
02009-09-10 16:04:09@
计算机的改良'的改良
-
02009-09-07 16:45:10@
细节最重要....
交了3次
第一次 没考虑 二次项系数为0
第二次 没考虑 输出数的大小
第三次 秒过 ..... -
02009-09-06 21:49:38@
'计算机的改良'的改良
争取下一次出个二元一次方程组的题…… -
02009-09-06 17:59:45@
编译通过...
├ 测试数据 01:答案正确... 0ms
├ 测试数据 02:答案正确... 0ms
├ 测试数据 03:答案正确... 0ms
├ 测试数据 04:答案正确... 0ms
├ 测试数据 05:答案正确... 0ms
├ 测试数据 06:答案正确... 0ms
├ 测试数据 07:答案正确... 0ms
├ 测试数据 08:答案正确... 0ms
├ 测试数据 09:答案正确... 0ms
├ 测试数据 10:答案正确... 0ms
---|---|---|---|---|---|---|---|-
Accepted 有效得分:100 有效耗时:0ms无语……交了3次……才AC……第一次忘了加1818181818了,第二次几乎没动……,第三次AC。纯模拟……虽然猥琐但还是顶一个!