Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Задачи

Просмотреть задачи

Решения


{Задача N1}
var m,n,k,l:longint;
    f:text;
begin
  assign(f,'INPUT.TXT');
  reset(f);
  read(f,m,n);
  k:=m; l:=n;
  close(f);
  while (m>0) and (n>0) do
    if m<n then n:=n mod m
           else m:=m mod n;
  assign(f,'OUTPUT.TXT');
  rewrite(f);
  write(f,(k*l) div (m+n));
  close(f);
end.

{Задача N2}
var n,i,j,s,t:longint;
    f:text;
begin
  assign(f,'INPUT.TXT');
  reset(f);
  read(f,n);
  s:=0;
  for i:=1 to n do
    for j:=1 to n do begin
      read(f,t);
      if (i>j) and (t=1) then inc(s);
    end;
  close(f);
  assign(f,'OUTPUT.TXT');
  rewrite(f);
  write(f,s);
  close(f);
end.


{Задача N3}
  Можно заметить, что если от любого числа отнять его сумму цифр, то оно будет
делится на 9. Вообще то заметить это было проще, написав программу, вычисляющую
эти значения для первых тысячи чисел, где получилась повторяющася 
последовательность  1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2,3 ...

  Теперь докажем это математически. Действительно, если число представленно в виде суммы своих 
разрядов, то в результате вычитания у каждого разряда будет множитель 10**k-1 
(к - номер разряда), который делится на 9 (нулевого разряда при вычитании
вообще не будет, т.к. он сокращается). Таким образом получаем, что в результате
последовательных операций получится число, равное остатку от деления на 9, ну а
если мы для каждого числа запишем эти остатки, то получим последовательность
1,2,3,4,5,6,7,8,0,1,2,3,4,5,6,7,8,0,1,2,3 ...
Т.е. единиц почти столько же сколько двоек :) За одним исключением: остаток от 
деления на 9 миллиарда будет 1, т.е. единиц на одну больше для числе от 1 до
миллиарда.

{Задача N4}
var c,n:longint;

procedure Stair(min,n: longint);
var i:longint;
begin
  for i:=min to n do
    if n-i>i then Stair(i+1,n-i);
  inc(c);
end;

begin
  assign(input, 'input.txt');
  assign(output, 'output.txt');
  reset(input);
  rewrite(output);
  read(n);
  Stair(1,n);
  write(c);
end.

{Задача N5}
var n,i,j,k: integer;
    d: array[0..30000] of integer;
    f:text;
begin
  assign(f,'INPUT.TXT');
  reset(f);
  read(f,n);
  for i:=0 to n-1 do read(f, d[i]);
  i:=1; k:=1;
  while i<n do
    if d[i]=d[i mod k] then inc(i)
    else begin
      inc(k);
      i:=k;
    end;
  close(f);
  assign(f,'OUTPUT.TXT');
  rewrite(f);
  write(f,k);
  close(f);
end.

Решения задач предоставлены Беляевым С.Н. Автор не гарантирует 100%-ю правильность решений Скачать файлы с решениями вы можете здесь: olimp2005.rar


Красноярский краевой Дворец пионеров, (c)2006 - 2024, ИНН 246305493507, E-mail: admin@acmp.ru



антидетект браузер для мультиаккаунтинга   Рубашка на кнопках мужская как называется