function iDivMod(const X: DWORD; const Y: DWord; var Z: DWord): DWORD;
var
a, b, k : DWord;
begin
a := 0;
b := x+1;
while b-a > 1 do begin
k := (a+b) shr 1;
if k*y > x then
b := k
else
a := k
end;
iDivMod := a;
z := x-a*y
// Result <--- целая часть результата деления X на Y
// Z <--- остаток от деления X на Y
end;
var
x, y, z, i : DWord;
begin
for i := 1 to 10000 do begin
X := Random(10000)+1;
Y := Random(x)+1;
if (iDivMod(x, y, z) <> x div y) or(z <> x mod y) then
WriteLn(x, ' ', y)
end;
end.
ZnVuY3Rpb24gaURpdk1vZChjb25zdCBYOiBEV09SRDsgY29uc3QgWTogRFdvcmQ7IHZhciBaOiBEV29yZCk6IERXT1JEOwp2YXIKCWEsIGIsIGsgOiBEV29yZDsKYmVnaW4KCglhIDo9IDA7CgliIDo9IHgrMTsKCQoJd2hpbGUgYi1hID4gMSBkbyBiZWdpbgoJCWsgOj0gKGErYikgc2hyIDE7CgkJaWYgayp5ID4geCB0aGVuIAoJCQliIDo9IGsKCQllbHNlCgkJCWEgOj0gawoJZW5kOwoKCWlEaXZNb2QgOj0gYTsKCXogOj0geC1hKnkKICAvLyBSZXN1bHQgPC0tLSDRhtC10LvQsNGPINGH0LDRgdGC0Ywg0YDQtdC30YPQu9GM0YLQsNGC0LAg0LTQtdC70LXQvdC40Y8gWCDQvdCwIFkKICAvLyBaICA8LS0tINC+0YHRgtCw0YLQvtC6INC+0YIg0LTQtdC70LXQvdC40Y8gWCDQvdCwIFkKZW5kOwoKdmFyCgl4LCB5LCB6LCBpIDogRFdvcmQ7CmJlZ2luCglmb3IgaSA6PSAxIHRvIDEwMDAwIGRvIGJlZ2luCgkJWCA6PSBSYW5kb20oMTAwMDApKzE7CgkJWSA6PSBSYW5kb20oeCkrMTsKCQlpZiAoaURpdk1vZCh4LCB5LCB6KSA8PiB4IGRpdiB5KSBvcih6IDw+IHggbW9kIHkpIHRoZW4KCQkJV3JpdGVMbih4LCAnICcsIHkpCgkJCgllbmQ7CmVuZC4=