Data update
This commit is contained in:
parent
81fd053722
commit
52a6ef48dd
10248 changed files with 63654 additions and 6775 deletions
25
Task/Egyptian-division/PascalABC.NET/egyptian-division.pas
Normal file
25
Task/Egyptian-division/PascalABC.NET/egyptian-division.pas
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
function egyptian_divmod(dividend, divisor: integer): (integer, integer);
|
||||
begin
|
||||
assert(divisor <> 0);
|
||||
var pwrs := |1|;
|
||||
var dbls := |divisor|;
|
||||
while dbls.Last <= dividend do
|
||||
begin
|
||||
pwrs := pwrs + |pwrs.Last * 2|;
|
||||
dbls := dbls + |pwrs.last * divisor|;
|
||||
end;
|
||||
var (ans, accum) := (0, 0);
|
||||
for var i := pwrs.Length - 1 to 0 step -1 do
|
||||
if accum + dbls[i] <= dividend then
|
||||
begin
|
||||
accum += dbls[i];
|
||||
ans += pwrs[i];
|
||||
end;
|
||||
result := (ans, abs(accum - dividend));
|
||||
end;
|
||||
|
||||
begin
|
||||
var (dividend, divisor) := (580, 34);
|
||||
var (quotient, remainder) := egyptian_divmod(dividend, divisor);
|
||||
println(dividend, 'divided by', divisor, 'using the Egyption method is', quotient, 'remainder', remainder);
|
||||
end.
|
||||
Loading…
Add table
Add a link
Reference in a new issue