1樓:匿名使用者
剛剛才寫的,望採納,謝謝~~
program hd;
type
hdtype=integer;
arr=array[1..1000] of hdtype;
hdreal=record
zs:arr;
xs:arr;
kz:longint;
kx:longint;
end;
vars1,s2:string;
a,b,c:arr;
ka,kb,kc,k:longint;
i,j:longint;
t1:longint;
f:boolean;
hr:hdreal;
function strtoint(s:string):longint;
vart,c:longint;
begin
val(s,t,c);
exit(t);
end;
procedure hdswap(var a,b:arr;var k1,k2:longint);
varta:arr;
tk:longint;
begin
ta:=a;
a:=b;
b:=ta;
tk:=k1;
k1:=k2;
k2:=tk;
end;
function conv2hd(s:string):arr;
vari,k:longint;
t:arr;
begin
k:=length(s);
fillchar(t,sizeof(t),0);
for i:=1 to length(s) do t[i]:=ord(s[length(s)-i+1])-48;
conv2hd:=t;
end;
function conv2str(a:arr;k:longint):string;
vari:longint;
t:string;
begin
for i:=k downto 1 do t:=t+chr(a[i]+48);
conv2str:=t;
end;
procedure hdplus(a,b:arr;var c:arr;k1,k2:longint;var k3:longint);
vark,i:longint;
begin
if k1>k2 then k:=k1 else k:=k2;
for i:=1 to k do
begin
a[i]:=b[i]+a[i];
a[i+1]:=a[i+1]+a[i] div 10;
a[i]:=a[i] mod 10;
end;
if a[k+1]<>0 then k:=k+1;
c:=a;
k3:=k;
end;
procedure hdminus(a,b:arr;var c:arr;k1,k2:longint;var k3:longint;f:boolean);
vark,i:longint;
begin
if not f then hdswap(a,b,k1,k2);
if k1>k2 then k:=k1 else k:=k2;
for i:=1 to k do
begin
if b[i]>a[i] then begin dec(a[i+1]); a[i]:=a[i]+10 end;
a[i]:=a[i]-b[i];
end;
while (a[k]=0) and (k>1) do dec(k);
c:=a;
k3:=k;
end;
procedure hdsinglemul(a:arr;var c:arr;n2,k:longint;var k3:longint);
vari:longint;
begin
for i:=1 to k do a[i]:=a[i]*n2;
for i:=1 to k-1 do begin a[i+1]:=a[i+1]+a[i] div 10; a[i]:=a[i] mod 10; end;
while a[k]>10 do
begin
a[k+1]:=a[k+1]+a[k] div 10; a[k]:=a[k] mod 10;
inc(k);
end;
k3:=k;
c:=a;
end;
function larger(a,b:arr;k1,k2:longint):boolean;
vari:longint;
begin
if k1>k2 then exit(true) else if k1b[i] then exit(true)
else if a[i]
larger:=true;
end;
function getsym(f:boolean):string;
begin
if not f then exit('-') else exit('');
end;
procedure hdmul(a,b:arr;var c:arr;k1,k2:longint;var k3:longint);
vari,j:longint;
begin
for j:=1 to k2 do for i:=1 to k1 do c[i+j-1]:=c[i+j-1]+a[i]*b[j];
for i:=1 to k1+k2 do begin c[i+1]:=c[i+1] + c[i] div 10; c[i]:=c[i] mod 10; end;
k3:=k1+k2;
while c[k3]=0 do dec(k3);
end;
function hdreal2string(n:hdreal):string;
vari:longint;
r:string;
begin
r:='';
for i:=n.kz downto 1 do r:=r+chr(n.zs[i]+48);
if n.kx=0 then exit(r);
r:=r+'.';
for i:=1 to n.kx do r:=r+chr(n.xs[i]+48);
if r[0]='.' then r:='0'+r;
hdreal2string:=r;
end;
procedure hddiv(a,b:longint;var c:hdreal);
varys:longint;
zs:longint;
s1:string;
s2:string;
p:longint;
begin
zs:=a div b;
str(zs,s1);
c.zs:=conv2hd(s1);
c.kz:=length(s1);
ys:=a mod b;
if ys=0 then exit;
while c.kx<1000 do
begin
inc(c.kx);
ys:=ys*10;
c.xs[c.kx]:=ys div b;
ys:=ys mod b;
if ys=0 then exit;
end;
end;
begin
readln(s1);
readln(s2);
fillchar(a,sizeof(a),0);
fillchar(b,sizeof(b),0);
fillchar(c,sizeof(c),0);
a:=conv2hd(s1);
b:=conv2hd(s2);
ka:=1000;
while a[ka]=0 do dec(ka);
kb:=1000;
while b[kb]=0 do dec(kb);
kc:=0;
hdplus(a,b,c,ka,kb,kc);
writeln(s1,'+',s2,'=',conv2str(c,kc));
f:=larger(a,b,ka,kb);
hdminus(a,b,c,ka,kb,kc,f);
writeln(s1,'-',s2,'=',getsym(f),conv2str(c,kc));
if length(s2)<5 then
begin
val(s2,t1,kc);
hdsinglemul(a,c,t1,ka,kc);
endelse
hdmul(a,b,c,ka,kb,kc);
writeln(s1,'*',s2,'=',conv2str(c,kc));
if (length(s1)<=7) and (length(s2)<=7) then
begin
hddiv(strtoint(s1),strtoint(s2),hr);
writeln(s1,'/',s2,'=',hdreal2string(hr));
end;
end.
PASCAL高精度階乘怎麼做,最多求100的階乘和
const max 100 vara array 1.max of integer i,j,k,x,n integer begin readln n k max a k 1 for i 2 to n do begin x 0 for j max downto k dobegin x x a j i ...
高精度kk軸承空轉怎麼加強,高精度KK軸承空轉怎麼加強
通過洗軸可以加強軸承空轉或者更換軸承也行,考慮用zippo火機油洗,實在找不到買家用潤滑油a也行。軸承 軸承bearing,用於確定旋轉軸與其他零件相對運動位置,起支承或導向作用的零部件。它的主要功能是支撐機械旋轉體,用以降低裝置在傳動過程中的機械載荷摩擦係數。按運動元件摩擦性質的不同,軸承可分為滾...
全自動高精度交流穩壓器,高精度全自動交流穩壓器,是幹嘛用的
若真是高精度全自動交流穩壓器對電腦沒有什麼影響 1500w的完全可以穩壓2台台試電腦和路由器 moden 因為2台台試電腦和路由器 moden的功率也不過幾百瓦 弘翼電源 1500kva的穩壓器最大負載為1200kw,配兩台電腦和路由器和moden多多有餘。完全沒有任何問題!穩壓器就是為裝置提供穩定...
機器高精度工作原理
我不是學機械的我是學電的。但是我了解一些。首先機械本身可以做到用機器結合,本身鎖得就比較死,齒輪間不是那麼容易亂動的。另外在控制方面,有一種電機專門用來做高精度的工作,步進電機。它可以一精確到電機軸按幾分之一轉 當然這是跟據電機造法不同搞出來的 用程式來程式設計控制拍數,就可以控制行進距離。電機和機...
什麼掃瞄器的掃瞄精度高,掃瞄器是可以高精度的掃瞄嗎?
結構光的是面掃瞄,雷射的是線掃瞄 在掃瞄時結構光要比雷射的快,精度高 雷射的可以直接掃瞄大型的物體,白光要借助於攝影測量系統來完成對大物體的測量。你可以看看中晶的bio 6000,它除了擁有超快速的膠體 膠片掃瞄速度,它還配備了光學解析度3200 x 6400 dpi 的ccd 48位的色彩深度,專...