Напишите программу(на Python), которая ищет среди целых чисел, принадлежащих числовому отрезку [130149; 130211], числа, имеющие ровно четыре различных натуральных делителя, не считая единицы и самого числа. Для каждого найденного числа запишите эти четыре делителя в ответ с новой строки в порядке убывания произведения этих четырёх делителей. Делители в строке должны следовать в порядке возрастания и быть записаны через пробел. Например, в диапазоне [10,18] ровно четыре целых различных натуральных делителя имеют 12 и 18, поэтому для этого диапазона ответ:
2 3 6 9
2 3 4 6
Не совсем понял о какой таблице речь.
Представляем буквы числами от 0 до 4. А-0, Р-1, У-2, К-3, О-4
получается список на первом месте которого 00000, а на последнем 44444
Переводим последнее число из пятеричной системы счисления в десятеричную и прибавляем единицу (т.к. отсчет начинается с нуля, а нумерация с 1)
Получаем: Всего 3125 комбинаций
По той же логике на 517 месте стоит число 516.
Переводим его в пятеричную систему - 04031
Подставляем вместо цифр буквы.
Под номером 517 находится комбинация - АОАКР
Теперь обратное, вместо букв цифры - 32143
Переводим в десятичную систему и прибавляем 1.
Курок находится под номером 2174
// Внимание! Если программа не работает, обновите версию!
Нулевой шаг: создание типизированного файла нужной структуры
begin
var f:file of real;
Assign(f,'MyReal.bin'); Rewrite(f);
loop 2 do begin
SeqRandomInteger(10,1,100).Select(t->t/10).ForEach(t->Write(f,t));
SeqRandomInteger(10,-100,-1).Select(t->t/10).ForEach(t->Write(f,t));
end;
f.Seek(0); // начало файла
var b:real;
while not Eof(f) do begin Read(f,b); Print(b) end;
Println;
f.Close
end.
Пример:
9.7 1 4.1 8.3 5.6 9.3 2.2 9.3 5.8 8.8 -8.8 -7.7 -1.4 -5.2 -7.2 -8.3 -1.3 -8.9 -6.3 -4.8 3.5 3.8 3.2 6 3.2 4.5 10 4.5 6.1 0.7 -8 -0.8 -3.3 -9.5 -7.9 -0.9 -7.4 -9.4 -1.8 -4.6
Собственно, программа
begin
var f1,f2:file of real;
Assign(f1,'MyReal.bin'); Reset(f1);
if f1.FileSize mod 20<>0 then begin
Writeln('Количество компонент во входном файле не кратно 20');
Exit
end;
Assign(f2,'MyReal2.bin'); Rewrite(f2);
var buf:=new real[5];
var b:real;
while not Eof(f1) do begin
// переписываем пять положительных
loop 5 do begin Read(f1,b); Write(f2,b) end;
// считываем пять положительных в буфер
for var i:=0 to 4 do Read(f1,buf[i]);
// переписываем пять отрицательных
loop 5 do begin Read(f1,b); Write(f2,b) end;
// пишем пять положительных из буфера
foreach var t in buf do Write(f2,t);
// переписываем пять отрицательных
loop 5 do begin Read(f1,b); Write(f2,b) end
end;
f1.Close;
// контрольное чтение
f2.Seek(0); // к началу
while not Eof(f2) do begin Read(f2,b); Print(b) end;
Writeln;
f2.Close
end.
Пример
9.7 1 4.1 8.3 5.6 -8.8 -7.7 -1.4 -5.2 -7.2 9.3 2.2 9.3 5.8 8.8 -8.3 -1.3 -8.9 -6.3 -4.8 3.5 3.8 3.2 6 3.2 -8 -0.8 -3.3 -9.5 -7.9 4.5 10 4.5 6.1 0.7 -0.9 -7.4 -9.4 -1.8 -4.6