作业帮 > 综合 > 作业

free pascal高精度计算问题

来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/08/08 13:15:37
free pascal高精度计算问题
小学生在学多位数的数值相加时,被告知,相加时,先从低位相加(即从右向左相加),如果在某位数值相加时结果大于10,就向下一位进1,这种进1的操作我们叫“进位”.
你的任务就是统计两个数在相加时最终产生了多少次进位操作,从而帮助他们来判断运算的复杂程度

输入:
两个正整数,长度小于10位

输出:
进位的次数


例子输入:
123 456
555 555
123 594

例子输出:
No carry
operation
3 carry operations
1 carry operation
free pascal高精度计算问题
var a,b:array [1..10] of integer;
la,lb,ans:integer;
m,n:int64;
procedure init;
begin
readln(m,n);
la:=0; lb:=0; ans:=0;
while m>=10 do
begin
inc(la); a[la]:=m mod 10; m:=m div 10;
end;
inc(la); a[la]:=m;
while n>=10 do
begin
inc(lb); b[lb]:=n mod 10; n:=n div 10;
end;
inc(lb); b[lb]:=n;
end;
procedure work;
var i,k,x,l:integer;
begin
if la>lb then l:=la else l:=lb;
k:=0;
for i:=1 to l do
begin
x:=k+a[i]+b[i];
k:=x div 10;
if k>=1 then inc(ans);
end;
end;
procedure outln;
begin
case ans of
0:writeln('No carry operation');
1:writeln('1 carry operation');
else writeln(ans,' carry operations');
end;
end;
Begin
assign(input,'input.txt'); reset(input);
assign(output,'output.txt'); rewrite(output);
while not eof do
begin
init;
work;
outln;
end;
close(input); close(output);
End.
//首先得纠正你一个错误:free pascal是指编译器,pascal是指语言,概念不要混淆.
//然后,我觉得这道题还是比较容易的,即使你是初学者,只要耐心点,完全可以独立完成.学pascal的话尽量少借用外力.
//最后,祝你学好pascal~~