kzhgutova
?>

Как записать число 100, используя семь шестёрок и знаки действий?

Информатика

Ответы

vitaldicky349
66 + (6 * 6)-(6 + 6) : 6=100
Verakravez8790
// PascalABC.NET 3.0, сборка 1128
var
  i,j,k,n,p:longint;
  f:array[1..10,1..2] of longint;
begin
  p:=2; i:=1;
  f[1,1]:=1; f[1,2]:=1;
  Write('Введите натуральное число не больше 2 147 483 647: ');
  Read(n);
  while n<>1 do begin
    if (n mod p)=0 then begin
      if f[i,1]<>p then
      begin Inc(i); f[i,1]:=p; f[i,2]:=1 end
      else Inc(f[i,2]);
      n:=n div p
    end
    else inc(p)
  end;
  k:=i;
  for i:=2 to k do
    for j:=1 to f[i,2] do Write(f[i,1],' ');
  Writeln
end.

Тестовое решение:
Введите натуральное число не больше 2 147 483 647: 37534
2 7 7 383
ohussyev
1) Решение методом рекурсии.
Программа проста в понимании, но неэффективна при больших значениях
var
  n: integer;
function f(i: integer): longint;
begin
  if i < 2 then
    f := 1
  else
    f := f(i - 1) + f(i - 2);
end;
begin
  read(n);
  writeln(f(n));
end.

2) Решение методом динамического программирования. Намного быстрее метода с рекурсией.
var
  i, n: integer;
  f: array[0..50] of longint;
begin
  read(n);
  f[0] := 1;
  f[1] := 1;
  for i := 2 to n do
    f[i] := f[i - 1] + f[i - 2];
  writeln(f[n]);
end.

3) Решение методом моделирования. Использует меньше памяти.
var
  n, a, b, i: integer;
begin
  read(n);
  if n < 2 then
    a := 1
  else
  begin
    a := 0;
    b := 1;
    for i := 0 to n do
    begin
      b := a + b;
      a := b - a;
    end;
  end;
  writeln(a);
end.

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

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

Как записать число 100, используя семь шестёрок и знаки действий?
Ваше имя (никнейм)*
Email*
Комментарий*

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

balabinatanya7174
MIKhAILOVNAAnton
Natali-0706
iv1as2
delfa-r6289
tatiyanabe2013727
ashantik
sveta300856729
bmargarita
damir
gub191025
asviridova07194
sirenashop25
horizma609
Yuliya701