主题:[讨论]改善高精度运算效率 之 扩大进制数
lyslgzjlb
[专家分:30] 发布于 2007-07-09 11:08:00
[color=800000][size=3]大家来讨论一下这几个问题!
(1)整数数组减1;
(2)整数数组除以整数;
(3)两个整数数组相乘.
谢谢大家帮忙!![/size][/color]
回复列表 (共3个回复)
沙发
怜丹欣∮ [专家分:120] 发布于 2007-07-09 15:03:00
[size=4](1)
j:=0;
while (n[j]=0) do inc(j);
dec(n[j]);
for k:=0 to j-1 do n[k]:=9999;
if ((j=ln-1)and(n[j]=0)) then dec(ln);[/size]
板凳
怜丹欣∮ [专家分:120] 发布于 2007-07-09 15:06:00
(2)
l:=0
for j:=la-1 downto 0 do
begin
inc(a[j],1*10000);
l:=a[j] mod i;
end;
while (a[la-1]=0) do dec(la);
3 楼
Matodied [专家分:7560] 发布于 2007-07-09 21:29:00
1、
下列程序的功能:输入一个不大于127位的正整数,输出它减1的结果(精确值)。
TYPE arr = ARRAY[1..127] OF INTEGER;
VAR
a, b: arr; i, k, p, l: INTEGER; s: STRING[127]; f: BOOLEAN;
BEGIN
READLN(s);
l := LENGTH(s);
FOR i:=1 TO l DO VAL(COPY(s, l + 1 - i, 1), a[i], k);
p := 1;
REPEAT
IF a[p] = 0 THEN BEGIN
b[p] := 9; p := p + 1; f := FALSE;
END ELSE BEGIN
b[p] := a[p] - 1; f := TRUE
END;
UNTIL f;
IF p <= l THEN BEGIN
FOR i:=p + 1 TO l DO b[i] := a[i];
END;
WRITE(s, ' - 1 = ');
IF s = '1' THEN WRITELN('0');
IF b[l] = 0 THEN l := l - 1;
FOR i := l DOWNTO 1 DO BEGIN
WRITE(b[i]);
END;
READLN;
END.
3、
请见[url=http://www.programfan.com/club/post-241558.html]这张帖子[/url]
我来回复