Во вторник прошла Всероссийская олимпиада
для школьников по информатике и задачки сегодняшние – оттуда.
Но я их переделал
под Java и в смысле формулировки, и в смысле использования случайных чисел
вместо чтения данных из файла.
Задание №1
В школьной олимпиаде по информатике
участвовало N учащихся разных классов, мальчиков и девочек. Спонсоры
приняли решение наградить самую юную участницу этих соревнований и самого
старшего программиста. Требуется найти номер самого старшего участника, среди
мальчиков, и номер самой младшей участницы, среди девочек.
Напишите класс, который принимает с клавиатуры
значение для переменной N (число участников) и затем генерирует N пар чисел. В каждой паре первое число – возраст
участника (от 6 до 20 лет), а второе – "мальчик-девочка" (0=мальчик,
1=девочка).
В качестве итогового результата класс должен
выводить на экран номер самого старшего участника (среди мальчиков) и номер
самой младшей участницы (среди девочек). Если таких участников несколько, то
следует вывести наименьший номер.
Задание №2
Региональный Оргкомитет запланировал встречу
прибывающих участников олимпиады. Каждая делегация сообщила время отправления и
время в пути к месту проведения олимпиады. Требуется написать программу,
которая поможет Оргкомитету определить время прибытия каждой делегации
(возможно, в другие сутки).
Напишите класс, который принимает с клавиатуры
две пары чисел:
·
Первая – время
отправления делегации задается в формате «HH:MM», где HH время в часах, которое
принимает значение от 00 до 23,
ММ – время в минутах, которое принимает значение от 00
до 59.
·
Вторая – время
делегации в пути – количество часов и количество минут. Количество часов не
превышает 120, минут – 59.
Класс должен определять время прибытия
делегации (в формате "часы и минуты").
Задание №3
В программе проведения олимпиады по
информатике был предусмотрен день отдыха для участников. В этот день для
участников был разработан маршрут, который включает в себя посещение
достопримечательностей города и развлекательный центр. Путь был распланирован с
указанием координат каждого посещаемого объекта, отсчитывая начало координат от
места проведения. Требуется определить расстояние, которое пройдут участники
этой прогулки от места проведения олимпиады, куда они должны и вернуться после
ее окончания.
Напишите класс, который принимает с клавиатуры
количество объектов на маршруте, а затем генерирует соответствующее количество координат – для каждого объекта пара целых чисел из
диапазона -10..+10 (первое число в паре=координата Х, второе=координата Y).
Класс должен определить протяженность маршрута
(с учетом возврата к месту проведения олимпиады).
Задание №4
Во время проведения олимпиады для
руководителей делегаций были организованы лекции выдающихся профессоров
известных университетов. Во время лекции известный профессор очень быстро
произносил свои лекции, так, что ничего невозможно было разобрать. Один из
преподавателей, посетив одну лекцию,
записал всё сказанное на ней на диктофон. Затем, прокручивая дома запись
с десятикратным замедлением, он смог записать всё, что сказал профессор.
Но вот незадача – профессор говорил так
быстро, что, даже прослушивая замедленную запись, нельзя было точно сказать,
где он делал паузы между словами. Таким образом, у учителя есть некоторый
текст, состоящий из n маленьких латинских букв – лекция, которая была прочитана
профессором. Теперь учитель хочет знать, какое количество различных слов длины
m мог использовать в своей лекции профессор.
Напишите класс, который принимает с клавиатуры
"длину реч профессора" (количество знаков в речи), а затем – количество знаков в одном слове (переменная m).
Класс должен определять, сколько слов длины m может идти подряд в
"речи профессора".
Этот комментарий был удален автором.
ОтветитьУдалитьЕсли мальчики или девочки отсутствуют, программа выводит ноль
ОтветитьУдалитьimport java.util.*;
class Zadacha_1
{static Scanner reader = new Scanner (System.in);
public static void main (String [] args)
{ System.out.println("Введите число:") ;
int n,v,s,max,min,x,m,d;
max=5; min=21;
m=0; d=0;
n=reader.nextInt ();
for(x=1; x<=n; x++)
{ v=(int)(15*Math.random())+6;
s=(int)(2*Math.random());
System.out.println (v+" "+s);
if (s==0 && v>max)
{ max=v; m=x; }
if (s==1 && v<min)
{min=v; d=x; }}
System.out.println ("Результат: "+m+" "+d);}}
Annie, решение совершенно правильное, а вот комментарий, если можно, поясни: я, кажется, понял, что ты имеешь в виду, но хочется услышать от тебя)))
ОтветитьУдалитьЕсли все s равны единицам, значит, мальчики отсутствуют. Значит, максимальный возраст, а соответственно и номер, найти невозможно. В таком случае программа выводит вместо номера 0. Аналогично с девочками
ОтветитьУдалитьОтлично
ОтветитьУдалитьimport java.util.*;
ОтветитьУдалитьclass Zadacha_4
{static Scanner reader = new Scanner (System.in);
public static void main (String [] args)
{int n,m;
System.out.println ("Введите кол-во знаков в речи");
n=reader.nextInt ();
System.out.println ("Введите кол-во знаков в слове");
m=reader.nextInt ();
while (m>n)
{System.out.println ("Слово должно быть короче речи");
m=reader.nextInt ();}
System.out.println ((n/m)+" слов");}}
Annie, использование while тут очень симпаточно.
ОтветитьУдалитьА вот с подсчетом количества возможных слов есть вот какая проблема: не сказано, что возможная серия слов начинается обязательно(!) с первой буквы.
Например, если "речь"=абракадабра, а слово состоит из 4-х букв, то возможные варианты слов:
либо -- абра, када
либо -- брак, адаб
либо -- рака, дабр
либо -- акад, абра
Вот ведь какое дело...
Понятно, у вас просто формулировка немного иная, чем в олимпиадных заданиях, мне показалось, что вы облегчили задачу
ОтветитьУдалитьimport java.util.*;
ОтветитьУдалитьclass Zadacha_4
{static Scanner reader = new Scanner (System.in);
public static void main (String [] args)
{int n,m,k;
System.out.println ("Введите кол-во знаков в речи");
n=reader.nextInt ();
System.out.println ("Введите кол-во знаков в слове");
m=reader.nextInt ();
while (m>n)
{System.out.println ("Слово должно быть короче речи");
m=reader.nextInt ();}
k=n%m; k++;
System.out.println (((n/m)*k)+" слов");}}
Annie, должен признаться, что для меня формулировка этой задачи в ее исходном виде тоже так и осталась не совсем понятной. Тут -- моя интерпретация.
ОтветитьУдалитьА я не помню, я ее не решила, потому что не вникла. Вам Азалия Ришатовна присылала условия с примерами? Насколько я поняла, сложность заключалась в том, что если несколько раз получается одинаковое сочетание букв, то считать его только один раз. Как, например, в случае, который привели вы:
ОтветитьУдалитьабра, када
брак, адаб
рака, дабр
акад, абра
"абра" получается два раза, то есть уникальных слов будет не 8, а 7
Или я не так поняла))
Да, прислала -- там был второй пример такой, что я как раз из-за него и не понял, как же они считают количество слов. На мой взгляд, условие задачи сформулировано совершенно неотчетливо, допускает разные варианты понимания -- и, сооответственно, разные варианты решения.
ОтветитьУдалитьВладимир Максович, там всё нормально вроде, во всяком случае условие, видимо, такое же по смыслу, как у Вас)) Я посмотрела ещё раз
ОтветитьУдалитьА, нет, извиняюсь. Похоже там всё-таки есть зависимость от частоты повтора сочетаний букв
ОтветитьУдалитьКак видно, надо эту задачу, Анечка, уточнять в смысле формулировки условий. Это бывает, я по собственному опыту знаю: иногда понятная мне формулировка на проверку оказывается совсем не такая уж и понятная для других)))
ОтветитьУдалить