1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
| const
Max = 255;
type
Mas = Array[0..Max] Of Byte;
var
S: Boolean;
M1, M2: String;
A1, A2, Mm1, Mm2, P: Mas;
Cod: Integer;
f, k, l, i, j, z, C, q, sum: Integer;
M, N1, N2: Integer;
function Sravn(M: Integer; A1, Mm2: Mas): Boolean;
var
k: Integer;
begin
if M <> N2 then Sravn := (M > N2)
else begin
Sravn := true;
k := 1;
while (k <= M) and (A1[k] = Mm2[k]) do inc(k);
if (k <= M) then Sravn := (A1[k] > Mm2[k]);
end;
end;
begin
WriteLn(' Vvedite delimoe');
ReadLn(M1);
N1 := LengTh(M1);
for i := 1 To N1 Do Val(M1[i], Mm1[i], Cod);
WriteLn(' Vvedite delitel');
ReadLn(M2);
N2 := LengTh(M2);
for i := 1 To N2 Do Val(M2[i], Mm2[i], Cod);
for i := 1 To N2 - 1 Do A1[i] := Mm1[i];
M := N2 - 1;
i := M;
while(i < N1) Do
begin
while ((Sravn(M, A1, Mm2) = False) And (i < N1)) Do
begin
sum := 0;
for q := 1 to M do
begin
sum := sum + A1[q];
if sum <> 0 then break;
end;
if ((M > 0) and (sum <> 0)) or (M = 0) then M := M + 1;
i := i + 1;
A1[M] := Mm1[i];
end;
j := 0;
while(Sravn (M, A1, Mm2) = True) Do
begin
f := N2 + 1;
for k := M DownTo M - N2 Do
begin
f := f - 1;
if A1[k] >= Mm2[f] Then A2[k] := A1[k] - Mm2[f]
Else
begin
A1[k] := A1[k] + 10;
A1[k - 1] := A1[k - 1] - 1;
for l := k DownTo 1 Do
if A1[l] < 0 Then
begin
A1[l - 1] := A1[l - 1] - 1;
A1[l] := A1[l] + 10;
end;
A2[k] := A1[k] - Mm2[f];
end;
end;
for l := M - N2 - 1 DownTo 1 Do
A2[l] := A1[l];
j := j + 1;
P[i - N2 + 1] := j;
while((A2 [1] = 0) And (M > 0)) Do
begin
for z := 1 To M - 1 Do
A2[z] := A2[z + 1];
M := M - 1;
A2[M + 1] := 0;
end;
for z := 1 To M Do
A1[z] := A2[z];
end;
while((A1 [1] = 0) And (M > 0)) Do
begin
for z := 1 To M - 1 Do
A1[z] := A1[z + 1];
M := M - 1;
A1[M + 1] := 0;
end;
end;
WriteLn(' Chastnoe: ');
j := 1;
while ((P[j] = 0) And (j >= N1 - N2)) Do j := j + 1;
while P[j] = 0 do inc(j);
for i := j To N1 - N2 + 1 Do Write(P[i]);
WriteLn;
if M = 0 Then
begin
M := 1;
A1[M] := 0;
end;
WriteLn(' Ostatok');
for i := 1 To M Do Write(A1[i]);
ReadLn;
end. |