Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Олимпиадные задачи с решениями на Turbo Pascal


Служба Рассылок Subscribe.Ru

Олимпиадные задачи c решениями на Turbo Pascal

Олимпиадные задачи с решениями на Turbo Pascal


Рассылка проекта Sapisoft.By.Ru [#014]


Подписчиков на 15.02.2002 - 2600 человек.


Главная Программы Задачи Рассылки Гостевая книга Контакты

Здравствуйте!


  Вы читаете пятнадцатый выпуск рассылки "Олимпиадные задачи с решениями на Turbo Pascal". В этом номере предлагаем для разбора задачу "Счастливые билеты".

Счастливые билеты 2 (3 уровень)


Условие:
Необходимо посчитать количество "счастливых" билетов с заданной суммой цифр, среди тех, номер которых состоит из 2*N разрядов. "Счастливым" является билет, у которого сумма первых N цифр равна сумме N последних цифр.

Технические требования:
Во входном файле находятся два числа разделенных пробелом: первое - N (1<=N<=50); второе - сумма цифр интересующих нас билетов (неотрицательное число не превосходящее 1000).
В качестве ответа необходимо вывести найденное число "счастливых" билетов.

Пример файлов входных и выходных данных:

Input.txt

Output.txt

2 2 4

Условию удовлетворяют билеты: 0101, 0110, 1001, 1010.

Решение:
Var
  N,S,number,i,j:integer;
  F:text;
  bilet:array [1..50] of byte;

Function Step10(n:integer):integer;{Вычисляем 10 в степени n}
var st:integer;
begin
  st:=1;
  for i:=1 to n do st:=st*10;
  step10:=st;
end;

Function Sum:integer;{Находим сумму цифр половины данного билета}
var summa:integer;
begin
  summa:=0;
  for i:=1 to n do inc(summa,bilet[i]);
  sum:=summa;
end;

Procedure Plus(k:integer);{Переходим к следующей половине билета}
begin
  if (bilet[k]<>9) then inc(bilet[k])
    else
    begin
      bilet[k]:=0;
      Plus(k-1);
    end;
end;

Begin
  assign(f,'Input.txt');
  reset(f);
  readln(f,n,s);
  close(f);
number:=0;
  s:=round(s/2);
  for j:=1 to n do bilet[j]:=0;
  for j:=1 to (step10(n)-1) do
  begin
    Plus(n);
    if (Sum=s) then inc(number);
  end;
  number:=sqr(number);
  assign(f,'Output.txt');
  rewrite(f);
  writeln(f,number);
  close(f);
End.


Реклама в рассылке:

RLE Banner Network    

  


Рассылки проекта Sapisoft:

Новости проекта Sapisoft [Шамис Алексей]
Информация о выходе новых версий программ и прочих обновлениях на сайте.


Уроки программирования на Turbo Pascal [Галин Павел]
Хотите стать Великим Программистом? Начните свой путь к вершине славы с изучения языка Turbo Pascal. Он как нельзя лучше подходит для начинающих программистов и в то же время используется для разработки сложных "профессиональных" программ.

Олимпиадные задачи с решениями на Turbo Pascal [Шамис Алексей]
В рассылке публикуются решения интересных олимпиадных задач различного уровня. Периодичность - 2-3 раза в неделю. Каждый выпуск содержит решение 2-3 задач с подробным анализом описанием алгоритма решения.

Задача в неделю. Олимпиадные задачи по информатике [Алексеев Александр]
Каждый понедельник в рассылке публикуется задача, которую необходимо решить и в следующий понедельник прислать программу на тестирование. Решения проверяются и в пятницу публикуется разбор и итоги тестирования.



Всегда рады видеть Вас на нашем сайте. Жду ваших предложений и замечаний, Шамис Алексей

Copyright © 2001-2002 by Shamis Alex.




http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное