2135 - [数值问题]高精度除以低精度
【问题描述】
输入两个高精度正整数a和b(a位数<=200,b的位数<=9位),求a除以b的商的整数部分。
【输入格式】lowdiv.in
<span>输入共两行,分别为a和b。(输入数据保证a大于b)</span>
<span>【输出格式】lowdiv.out</span>
<span>输出共一行,表示<span style="font-family:'Microsoft Yahei';font-size:14px;line-height:21px;background-color:#F5F5F5;">a除以b的商的整数部分</span>。</span>
<span>【输入样例1】 </span><span><br />
9999999999999999999999999999999999123456789123456789
3333
<span style="line-height:21px;"></span>
<span>【输出样例1】</span>
37040740811118
<br />
<br />
题目输入
题目输出
输入/输出样例
输入格式
输出格式
提示
Const
Size = 200;
Type
hugeint = Record
len : Integer;
num : Array[1..Size] Of longint;
End;
var a:hugeint;
s1:string;
i:integer;
x:longint;
procedure lowdiv(a:hugeint;x:longint);
var
i:longint;
temp:int64;
ans:hugeint;
begin
fillchar(ans.num,sizeof(ans.num),0);
ans.len:=a.len;
temp:=0;
for i:=a.len downto 1 do
begin
temp:=temp*10+a.num[i];
ans.num[i]:=temp div x;
temp:=temp mod x;
end;
while (ans.len>1)and(ans.num[ans.len]=0) do dec(ans.len);
for i:=ans.len downto 1 do write(ans.num[i]);
writeln;
end;
procedure datain;
begin
assign(input,'lowdiv.in'); assign(output,'lowdiv.out');
reset(input); rewrite(output);
readln(s1);
readln(x);
a.len:=length(s1);
for i:=1 to a.len do a.num[i]:=ord(s1[a.len-i+1])-ord('0');
end;
begin
datain;
lowdiv(a,x);
close(input);close(output);
end.
<br />