1159. День рождения

 

Вася увидел выступление Дэвида Копперфилда и решил поразить своих одноклассников собственными фокусами. Вот один из них: Вася предлагает однокласснику умножить число даты его рождения на 12, а номер месяца – на 31 и сообщить ему сумму обоих произведений, после чего быстро называет его дату рождения.

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

 

Вход. Одно число – сумма, полученная Васиным одноклассником.

 

Выход. Вывести день и месяц рождения одноклассника Васи в формате ДД/ММ.

 

Пример входа 1

Пример выхода 1

170

09/02

 

 

Пример входа 2

Пример выхода 2

322

01/10

 

 

РЕШЕНИЕ

перебор

 

Анализ алгоритма

Пусть s – входная сумма. Методом полного перебора найдем такие значения day (1 ≤ day ≤ 31) и mon (1 ≤ mon ≤ 12), что day * 12 + mon * 31 = s.

 

Реализация алгоритма

Читаем входное значение суммы s.

 

scanf("%d", &s);

 

Перебираем значения дня day и месяца mon.

 

for (day = 1; day <= 31; day++)

for (mon = 1; mon <= 12; mon++)

 

Если сумма произведений равна s, то выводим день и месяц рождения Васи и завершаем работу программы.

 

  if (day * 12 + mon * 31 == s)

  {

    printf("%02d/%02d ", day, mon);

    return 0;

  }

 

Java реализация

 

import java.util.*;

 

public class Main

{

  public static void main(String[] args)

  {

    Scanner con = new Scanner(System.in);

    int s = con.nextInt();

    for (int day = 1; day <= 31; day++)

    for (int mon = 1; mon <= 12; mon++)

      if (day * 12 + mon * 31 == s)

      {

        System.out.printf("%02d/%02d ", day, mon);

        con.close();

        return;

      }

    con.close();

  }

}

 

Python реализация

 

s = int(input())

for day in range(1, 32):

  for mon in range(1,13):

    if day * 12 + mon * 31 == s:

      print("%02d/%02d " % (day, mon))

      quit()