讨论 / 大牛进来
000wang 2008-08-02 06:11:00
点我顶贴 收藏 删除
好心的牛们;求本题原代码;谢谢了.
#1 LIFE@2008-07-01 21:01:00
回复 删除
program life;

var

m,n,b,a,c,k:integer;

i,j,d:qword;

flag1,flag2:boolean;

st,st1,str1,str2:string;

procedure judge;

begin

b:=1;

str(j,st);

m:=length (st);

k:=m mod 3;

for c:=1 to k do

write (st[c]);

if c<>m then write (,);

for c:=k+1 to m do

begin

write (st[c]);

if (b mod 3=0) and (c<>m) then write (,);

inc(b);

end;

end;

begin

readln (st);

if st[1]=- then

begin

flag1:=true;

delete(st,1,1);

end;

b:=pos(-,st);

if b<>0 then

begin

flag2:=true;

delete (st,b,1);

end;

b:=pos( ,st);

a:=length (st);

str1:=copy(st,1,b-1);

str2:=copy(st,b+1,a);

c:=1; d:=1;

b:=length (str1);

for m:=b downto 1 do

begin

for k:=1 to m-1 do

d:=d*10;

d:=d*(ord(st[c])-ord(0));

inc(i,d);

inc(c);

d:=1;

end;

c:=1;

b:=length (str2);

for n:=b downto 1 do

begin

for k:=1 to n-1 do d:=d*10;

d:=d*(ord(str2[c])-ord(0));

inc(j,d);

inc(c);

d:=1;

end;

if (flag1=true)and (flag2=false) then

begin

write (-);

j:=i+j;

judge;

end;

if (flag2=true)and (flag1=false) then begin j:=i+j; judge; end;

if (flag1=true)and (flag2=true) then

if i>j then

begin

write (-);

j:=j-i;

judge;

end

else

begin

j:=j-i;

judge;

end;

if (flag1=false) and (flag2=false) then

if i<j then

begin

write (-);

j:=j-i;

judge;

end

else

begin

j:=i-j;

judge;

end;

end.

#2 xiaokeke@2008-07-01 21:02:00
回复 删除
program exd;

var s,s1,s2:string;

la,lb,i,j,k,n:integer; k1,k2:boolean;

a,b,c,d:array[1..200] of integer;

procedure gj;

var i,j,m,n:integer;

begin

if la<lb then la:=lb;

for i:=1 to la do

begin

a[i]:=a[i]+b[i];

a[i+1]:=a[i+1]+a[i] div 10;

a[i]:=a[i] mod 10;

end;

if a[la+1]=1 then inc(la);

m:=0;

for i:=1 to la do

begin

if (i mod 3=1) and (i>3) then begin inc(m); d[m]:=96; end;

inc(m); d[m]:=a[i];

end; la:=m;

for i:=1 to la do

c[i]:=d[la-i+1];

end;

procedure gjj;

var i,j,m,n:integer; t:array[1..200] of integer;

begin

if la<lb then begin t:=a; a:=b; b:=t; n:=la; la:=lb; lb:=n; end;

if la=lb then

if s1<s2 then begin t:=a; a:=b; b:=t; n:=la; la:=lb; lb:=n; end;

for i:=1 to la do

begin

if a[i]<b[i] then begin

dec(a[i+1]); a[i]:=a[i]+10-b[i]; end

else a[i]:=a[i]-b[i];

end;

while a[la]=0 do dec(la);

m:=0;

for i:=1 to la do

begin

if (i mod 3=1) and (i>3) then begin inc(m); d[m]:=96; end;

inc(m); d[m]:=a[i];

end;

la:=m;

for i:=1 to la do

c[i]:=d[la-i+1];

end;

begin

readln(s);

s1:=copy(s,1,pos( ,s)-1);

delete(s,1,pos( ,s));

s2:=s;

if s1=s2 then begin writeln(0); halt; end;

if s1[1]=- then begin k1:=true; delete(s1,1,1); end;

if s2[1]=- then begin k2:=true; delete(s2,1,1); end;

for i:=1 to length(s1) do

a[i]:=ord(s1[length(s1)-i+1])-48;

for i:=1 to length(s2) do

b[i]:=ord(s2[length(s2)-i+1])-48;

la:=length(s1);

lb:=length(s2);

if (not k1) and (k2) then

begin

gj;

for i:=1 to la do

begin

if c[i]=96 then write(,) else

write(c[i]);

end;

end;

if (k1) and (not k2) then

begin write(-);

gj;

for i:=1 to la do

begin

if c[i]=96 then write(,) else

write(c[i]);

end;

end;

if (not k1) and (not k2) then

begin

gjj;

if (la<lb) or ((la=lb) and (s1<s2)) then write(-);

for i:=1 to la do

begin

if c[i]=96 then write(,) else

write(c[i]);

end;

end;

if (k1) and (k2) then

begin

gjj;

if (la>lb) or ((la=lb) and (s1>s2)) then write(-);

for i:=1 to la do

begin

if c[i]=96 then write(,) else

write(c[i]);

end;

end;

end.

100多行的高精度~~~

#3 000wang@2008-07-02 02:25:00
回复 删除
好心的牛们

真不知道给谁分

#4 000wang@2008-07-02 02:27:00
回复 删除
对不起了,xiaokaka
#5 我靠@2008-08-02 06:06:00
回复 删除
zhu ,bu yong gao jing du!program pp;

var

i,j:longint;

m,n:int64;

k:qword;

s:string;

begin

readln(m,n);

if m<n then

begin

write(’-’);

k:=n-m;

end

else

k:=m-n;

str(k,s);

for i:=length(s) downto 1 do

begin

inc(j);

if j mod 3=0 then

insert(’,’,s,i);

end;

writeln(s);

end.

#6 lychees@2008-08-02 06:11:00
回复 删除
对不起了,xiaokaka

-----------------

貌似是xiaokeke...

查看更多回复
提交回复