// PascalABC.NET 3.1, сборка 1250 от 28.05.2016
const
k=650;
function GetData(f:file of integer):integer;
// получить из файла очередное значение
begin
if not f.Eof then Read(f,Result)
else Result:=0
end;
function NOD(a,b:integer):integer;
// нахождение НОД
begin
while b>0 do (a,b):=(b,a mod b);
Result:=a
end;
function VZP(a,b:integer):boolean;
// являются ли a и b взаимно простыми?
begin
Result:=NOD(a,b)=1;
end;
function Has1(n:integer):boolean:=(Pos('1',n.ToString)>0);
begin
var f:file of integer;
// создаем файл
Assign(f,'F.dat'); Rewrite(f);
var n:integer;
for var i:=1 to k do begin
n:=(Random(1,2)=1?Random(135,4000):Random(4578,15000));
f.Write(n);
end;
f.Close;
// файл создан, начинаем его читать и обрабатывать
Reset(f);
Writeln('Задание 1');
while not f.Eof do begin n:=GetData(f); Print(n); end;
Writeln(NewLine,'Задание 2');
f.Seek(0);
var a:=GetData(f);
var b:=GetData(f);
var c:integer;
var VZPLeft:=VZP(a,b);
var VZPRight:boolean;
if VZPLeft then Print(a);
for var i:=3 to k-1 do begin
c:=GetData(f);
VZPRight:=VZP(b,c);
if VZPLeft and VZPRight then Print(b);
(a,b):=(b,c); VZPleft:=VZPRight
end;
c:=GetData(f);
if VZP(b,c) then Print(b,c);
Writeln(NewLine,'Задание 3');
f.Seek(0);
var mx:=0;
while not f.Eof do begin
a:=GetData(f);
if Has1(a) then mx:=Max(mx,a)
end;
if mx>0 then Writeln(mx);
f.Close
end.
<u><em>Тестовое решение в прикрепленном файле </em></u>
Будем рассуждать:
Заяц, Волк и Лиса не были последними. Волк и Ёж не были первыми. Т.е. остаётся два варианта: Заяц и Лиса. Судя по этому можно определить, что Лиса была первой, т.к. Заяц не мог (по моему мнению) ПРИБЕЖАТЬ первым, потому, что он прыгает, а это (по моему мнению) не считается. Поэтому Лиса была первой.
.алгоритм вычисления произведение целых чисел
Я только мыслю, ничего не печатаю, ничего не говорю, а машина меня понимает, словно мой мозг - часть машины
<u>// PascalABC.NET 3.3, сборка 1627 от 27.01.2018</u>
<u>// Внимание! Если программа не работает, обновите версию!</u>
begin
var s:=Arr('первое', 'второе','третье','четвертое','пятое');
var p,r:real;
var c:char;
Write('Введите первое число: '); Readln(r);
for var i:=0 to 3 do begin
Write('Выберите ',s[i], ' действие (a) сложить, b) вычесть,');
Write('c) умножить, d) разделить): '); Readln(c);
Write('Введите ',s[i+1],' число: '); Readln(p);
case c of
'a':r+=p;
'b':r-=p;
'c':r*=p;
'd':r/=p;
end;
Writeln('Результат: ',r)
end
end.