Кузнецов
?>

Паскаль. дано натуральное число n. требуется представить его в виде суммы двух натуральных чисел a и b таких, что нод (наибольший общий делитель) чисел a и b — максимален. входные данные во входном файле input.txt записано натуральное число n (2< =n< =109) выходные данные в выходной файл output.txt выведите два искомых числа a и b. если решений несколько, выведите то из них, где a принимает наименьшее возможное значение.

Информатика

Ответы

Aleksandrovich-Yurevna1421
Если A, B имеют общий делитель d, то и A + B делится на d. Отсюда идея: найдем наибольший делитель N, меньший N, и представим всё в виде d + (N - d). d будем искать так: найдём наименьший делитель q, не равный 1 (если число составное, он не больше корня из N), тогда d = N/q.

var
  q, d, n: longint;
  isfound: boolean;

begin
  readln(n);
  isfound := false;
  for q := 2 to trunc(sqrt(n)) + 1 do
    if n mod q = 0 then
    begin
      d := n div q;
      write(d, ' ', n - d);
      isfound := true;
      break;
    end;
  if not isfound then
    write(1, ' ', n - 1);
end.
Valerevna
Из условия Фано следует, что в префиксном неравномерном двоичном коде, предусматривающем однозначное декодирование, ни одно кодовое слово не может быть началом другого. 

Таким образом, оставшиеся три кода не могут быть началом кода буквы Б, и началами кодов друг друга.

То есть коды 0 и 00 отпадают сразу, т.к. это начала буквы Б.

Если предположить, что один из кодов равен 1, и что нам нужны кратчайшие коды, значит оставшиеся коды могут быть только 01 и 011.

Если предположить, что коды двузначны, тогда кодами могут быть 01, 10 и 11.

В первом случае суммарная длина кодов равна 1+2+3+3 = 9, во втором случае - 2+2+2+3 = 9.

Оба варианта подходят, кратчайшая суммарная длина - 9
Andrei Morozov
1. Для цикла For

var
  x,n,p:longint;
  i:integer;
begin
  readln (x,n);
  p:=1;
  for i := 1 to N do
    p:=p*x;
  writeln(x,' в степени ',n,' равно ',p );
end.

2. Для цикла While
var
  x,n,p:longint;
  i:integer;
begin
  readln (x,n);
  p:=1;
  i:=1;
  while i<=n do begin
    p:=p*x;
    i:=i+1;
  end;
  writeln(x,' в степени ',n,' равно ',p );
end.

3. Для цикла Repeat

var
  x,n,p:longint;
  i:integer;
begin
  readln (x,n);
  p:=1;
  i:=1;
  repeat
    p:=p*x;
    i:=i+1;
  until i>n;
  writeln(x,' в степени ',n,' равно ',p );
end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Паскаль. дано натуральное число n. требуется представить его в виде суммы двух натуральных чисел a и b таких, что нод (наибольший общий делитель) чисел a и b — максимален. входные данные во входном файле input.txt записано натуральное число n (2< =n< =109) выходные данные в выходной файл output.txt выведите два искомых числа a и b. если решений несколько, выведите то из них, где a принимает наименьшее возможное значение.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

ПолухинаТененева565
Мария-Кострыгина175
BrezhnevaKoidula
coleslow12
shalunovroman
Анатольевич
irina-mic
ea9824165833886
simonovaliubov5852
И.Д.1065
kortikov77
Pastel-sova
koxhulya61
Andreevich
kriapex