Перейти к содержанию
aka19972

Мероприятие "Тыжпрограммист"

Рекомендуемые сообщения

Добрый день, дорогие игроки Galaxy One. 


Я хочу предоставить Вашему вниманию небольшое Мероприятие под названием "ТЫЖПРОГРАММИСТ".

 

fcee3e0b7fb9.png

 

 

Суть данного Мероприятия заключается в том, чтобы решить задачки, связанные с программированием и (или) логическим мышлением.
Данное мероприятие будет состоять из трёх заданий, которые будут (или уже) представлены ниже. 


 

Задание №1. 

Внимание! Решением задачи может быть и компьютерная программа, и математически обоснованное решение. В последнем случае на проверку нужно прислать pdf-файл, который может содержать отсканированное с бумажного носителя решение, или решение, оформленное с помощью любого программного продукта, например, текстового редактора. 

 

Иван Кузьмич, участник Сталинградской битвы, приехал на парад 70-летия Победы Великой Отечественной Войны в Москву. Друг его правнука Кузьмы, Василий, решил узнать возраст знаменитого фронтовика. В ответ он услышал от своего друга: «В день капитуляции Германии число прожитых прадедом недель превысило 1 килобайт. Во время парада число прожитых им дней ещё не будет превышать 32 килобайта. День недели, в который прадед празднует ближайший юбилей, совпадает с днем недели, на который приходится Парад Победы. Вася, можешь ли ты назвать дату рождения моего прадеда, если число, образованное из чисел, соответствующих номеру дня в месяце и номеру месяца его рождения, является простым?». Вася смог, а сможешь ли ты?

 

Задание №2.

Жизнь игроков Galaxy кипит и в виртуальной реальности: есть форум Galaxy, есть несколько групп в социальной сети ВКонтакте. Какая запись получила больше всего комментариев, а значит самый большой интерес в первый месяц нового 2015 года в группе Galaxy? В поисках ответа на этот вопрос «непосвященные» в тайны системного анализа стали терпеливо считать комментарии к сообщениям. А некоторые игроки Galaxy знали, что сообщения хранятся в базе данных и можно составить запрос, который вернет количество сообщений и их заголовки, а также информацию о всех комментариях, которая будет содержать сам комментарий и номер сообщения, на которое он был оставлен. А далее подсчетом будет заниматься специальная программа. Код такой программы вам и нужно написать. 
 
Итак, каждое сообщение является записью или комментарием к записи. Комментарий всегда появляется позже, чем запись, на которое он был оставлен. Комментарий, может относится только к записи, а не к другому комментарию. Все сообщения (записи и комментарии) нумеруются, начиная с единицы в порядке их добавления. Напишите программу, которая выведет заголовок записи, к которой оставлено больше всего комментариев.
 
Входные данные:
В первой строке вводится целое число N - количество сообщений (общее количество и записей и комментариев) (1 <= N <= 1000). Следующие строки содержат описание записей и комментариев, расположенные в хронологическом порядке. 
Описание записи состоит из двух строк: первая строка содержит число 0; вторая строка содержит заголовок сообщения (длина не превышает 30 символов). В описании записи нет информации о порядковом номере сообщения, 0 в первой строке обозначает, что данное сообщение это запись, а не комментарий. Описание комментария состоит из двух строк, первая содержит целое число – номер записи, ответом на которое он является, вторая строка содержит текст самого сообщения. В описании нет информации о порядковом номере самого сообщения.
 
Выходные данные:
Выведите заголовок записи, к которой относится наибольшее количество комментариев. Если таких записей несколько, то выведите первую в хронологическом порядке.

 

 


Задание №3 (решено).

За 5-летнюю историю на проекте Galaxy сложилось много интересных традиций: регулярно проводятся такие мероприятия, как «Новый Год», «Counter Strike», «Города», «Фортуна» и это еще далеко не все. Одно из таких традиционных (хоть и редких) мероприятий — фестиваль  кино, например, «Сними фильм о Galaxy и забери приз». Одна из команд решила снять фильм «Титаник». В целях экономии было решено заменить круизный лайнер двумя лодками, общий вес компании был практически равен (на самом деле чуть меньше) тому, сколько могут выдержать 2 лодки. Однако, когда все заняли свои места, одна из лодок начала тонуть, так как общий вес пассажиров превышал норму, а вторая лодка вполне могла вместить еще кого-нибудь. К счастью, это были игроки Galaxy, и они без труда рассчитали, как необходимо распределить пассажиров, чтобы обе лодки оставались на плаву. Для этого нужно, чтобы общий вес пассажиров был практически одинаковым на каждой из лодок: выражаясь математическим языком, чтобы разность между весом пассажиров на каждой из лодок стала минимальной. 
 
Чтобы избежать подобной ситуации, напишите программу, которая позволит правильно распределить пассажиров.
 
Входные данные:
В первой строке число N – количество пассажиров (1 ? N ? 20); 
Во второй строке N целых чисел, разделенных пробелами — вес каждого из пассажиров, каждое из чисел от 10 до 120.
 
Выходные данные:
Одно число — минимальную разность между весом двух групп пассажиров.

 


Доп. задание на 20.000.000 $.

Даже в современном мире с датами связано много самых разных суеверий. Большая часть из них легко развенчивается, если вспомнить о том, что в разные времена и в разных странах существовали (и существуют) различные системы летоисчисления. До 18 века гражданский год начинался в России с 1 марта, а религиозный – с 1 сентября. И только в 1700 году Петр I перенес дату начала года на 1 января, решив сравнять отечественное летоисчисление с европейским. Кстати в России тогда шел не 1700, а 7208 год от сотворения мира. 

Можно выделить математически необычные даты. Например, первый «Миг полного числового равноденствия» во втором тысячелетии был 20 февраля 2002 года в 20 часов 2 минуты: 20.02 2002 20.02. Это мгновение можно записать в виде палиндрома – строки, которая читается одинаково как слева направо, так и справа налево.


Напишите программу, которая печатает все «миги полного числового равноденствия» в нынешнем тысячелетии и их количество.
 

Входные данные:

Нет
 

Выходные данные:

В первой строке вывести количество таких дат.
В последующих строка сами даты, каждую дату выводить с новой строки.

 

 

Итак, задания были (будут) даны выше. К ним можно приступать с того момента, как была создана тема - это будет считаться началом мероприятия.
Конец мероприятия -
30. 01. 2015.
Подведение итогов в этот же день, список победителей будет предоставлен с
30 на 31 января. 

 

Что же у нас с призом и как всё будет выплачиваться? А вот как:
1. Вы выполняете все задачки, которые можете выполнить и отправляете отчёт в данную тему (по мере выполнения заданий).
2. 30 января будет закрытие темы, после чего я буду проверять Ваши отчёты.
3. с 30 по 31 число Вы узнаете то, сколько заданий из скольки Вы решили верно и приз, который Вы заработали. 
4. Выплаты призов игрокам.

Сами призы:

1. Если Вы верно решите одно из заданий: 20.000.000 $ + 10.000 материалов + 1.000 наркотиков (последующим игрокам [пяти игрокам, следующим игрокам выплат не будет] выплачивается лишь 1.000.000 $).
2. Если Вы первым решите верно два задания (если одно из заданий было решено игроками, а другое нет - засчитывается лишь одно задание, если оно верно [если и второе задание было уже решено, то выплата составит 1.000.000 $]): 45. 000. 000 $ + 15.000 материалов + 1.000 наркотиков (последующим игрокам [трём игрокам, следующим игрокам выплат не будет] выплачивается лишь 1.000.000 $).

3. А если Вы верно решите все три задания (если одно (а тем более два) из заданий было решено игроками, а другое нет - засчитывается лишь два (одно) задание, если оно верно [если и остальные задания были уже решены, то выплата составит 1.000.000 $]): 60.000.000 $ + 10. 000 материалов + 1.000 наркотиков. Думаешь это всё (для того, кто смог решить все три задания)? О, нет! Его (а может и её) ждёт ещё один приз! Это клоп в деревне Русской Мафии! А вот и он сам: внутри, транспорт1,транспорт2, транспорт3. (последующим игрокам выплаты не предоставляются вовсе).

Форма отчёта:

1. Ваш ник. 
2. Количество выполненных заданий и их номера.
3. Архив с заданием (заданиями).

 

Последнее редактирование поста разрешено не более, чем через час после его написания.
Запрещено копировать отчёты у других игроков! Запрещено разводить флуд и оффтопить (по всем вопросам в личные сообщения)! 

Несоблюдение правил - наказание по правилам форума и автоматическое неучастие (либо же дисквалификация).  


 

Внимание! Все имена, даты и значения, которые будут присутствовать в заданиях, выдуманные. Любое совпадение - это просто совпадение. 
Желаю удачи! Мероприятие считается открытым с этого момента!  


 

[spoiler=ИТОГИ МЕРОПРИЯТИЯ]
1. LOTOS (одно задание): 20.000.000 $ + 10.000 материалов + 1.000 наркотиков - ожидает выплаты



[spoiler=Ответы к заданиям]
1. ссылка на скачивание:
кликабельно 
2. ссылка на VT: кликабельно


 

Изменено пользователем aka19972

Поделиться сообщением


Ссылка на сообщение

А как быть тем, кто не програмист?!

Хороший повод начать заниматься программированием.

Мероприятие одобрено.

Поделиться сообщением


Ссылка на сообщение

1. Ваш ник.  Sitooo
2. Количество выполненных заданий и их номера. 1 задание.
3. Архив с заданием (заданиями). Число прожитых недель никогда не сможет превысить ни килобайт, ни "double word"(dword,uint,4 байта).

Невозможно решить, ибо условие задачи абсурдно.

Поделиться сообщением


Ссылка на сообщение

Не знаю как считать недели в килобайтах. Или это я старею уже и не помню ничего. :fool: 

Поделиться сообщением


Ссылка на сообщение

1. Ваш ник.  Sitooo

2. Количество выполненных заданий и их номера. 1 задание.

3. Архив с заданием (заданиями). Число прожитых недель никогда не сможет превысить ни килобайт, ни "double word"(dword,uint,4 байта).

Невозможно решить, ибо условие задачи абсурдно.

 

 

Не знаю как считать недели в килобайтах. Или это я старею уже и не помню ничего. :fool: 

 

Это для кого?

 

Суть данного Мероприятия заключается в том, чтобы решить задачки, связанные с программированием и (или) логическим мышлением.

p.s. задание, которые я буду добавлять, уже решены => данное задание решено! 

Изменено пользователем aka19972

Поделиться сообщением


Ссылка на сообщение

Это для кого?

 

p.s. задание, которые я буду добавлять, уже решены => данное задание решено! 

Не, ну я думал перевести в байты. Там тогда на 9 мая ветерану будет 23 года, но 32 килобайта это тогда 670 лет. Да ну, странная задача. Если уже решена, можно посмотреть решение?

Поделиться сообщением


Ссылка на сообщение

Не, ну я думал перевести в байты. Там тогда на 9 мая ветерану будет 23 года, но 32 килобайта это тогда 670 лет. Да ну, странная задача. Если уже решена, можно посмотреть решение?

 

Внимательно читай все условия задачи, у меня на неё ушло часа 2-3. 

Нет, сейчас я не дам тебе решение задания. После окончания МП оно будет предоставлено на обозрение.  

Поделиться сообщением


Ссылка на сообщение

1. Ваш ник.  LOTOS
2. Количество выполненных заданий и их номера. 1
3. Архив с заданием (заданиями). 17.06.1943

Поделиться сообщением


Ссылка на сообщение

задача уже решена решать уже ненадо приз уже выдан?

 

Задача решена мною, но не игроками. Решать надо, приз не выдан. Призы будут выданы после 30 января. ПРАВИЛА ЧИТАТЬ НУЖНО!

 

1. Ваш ник.  LOTOS

2. Количество выполненных заданий и их номера. 1

3. Архив с заданием (заданиями). 17.06.1943

 

Мне не нужна дата наобум. И для кого это?

 

Внимание! Решением задачи может быть и компьютерная программа, и математически обоснованное решение. В последнем случае на проверку нужно прислать pdf-файл, который может содержать отсканированное с бумажного носителя решение, или решение, оформленное с помощью любого программного продукта, например, текстового редактора. 

Поделиться сообщением


Ссылка на сообщение

 

Можно узнать тогда, при чем здесь программирование? Если год высчитывается обычным логическим мышлением...

 

Можно узнать, но выше ответ был дан.

 

Суть данного Мероприятия заключается в том, чтобы решить задачки, связанные с программированием и (или) логическим мышлением.

Изменено пользователем aka19972

Поделиться сообщением


Ссылка на сообщение

хороший способ сдать программирование, поменяй пожалуйста в первом сообщении:

 

Суть данного Мероприятия заключается в том, чтобы я сдал(ла) эти работы.

 

Дико извиняюсь за оффтоп, и за то, что могу оказаться неправ.

Поделиться сообщением


Ссылка на сообщение

хороший способ сдать программирование, поменяй пожалуйста в первом сообщении:

 

Суть данного Мероприятия заключается в том, чтобы я сдал(ла) эти работы.

 

Дико извиняюсь за оффтоп, и за то, что могу оказаться неправ.

 

Ты абсолютно не прав. Я экономистка. И я ещё раз повторюсь - задания, которые будут представлены для решения - уже решены. Попытка выпендриться - неудачная. 

Поделиться сообщением


Ссылка на сообщение

1. Ваш ник. Sitooo

2. Количество выполненных заданий и их номера. 1 задание.

3. Архив с заданием (заданиями). Число прожитых недель никогда не сможет превысить ни килобайт, ни "double word"(dword,uint,4 байта).

Невозможно решить, ибо условие задачи абсурдно.

Думал сперва, неужели такие умные у нас игроки. А нет, оказалось, что наоборот — лишь бы в гугле пробить.

 

По теме:

Пробовал решить 1ю задачу, пока еду в метро. И никакие программы тут не нужны. Путаница возникла с простым числом, а именно то, что по моему рассчету, ему в год 70летия исполняется 90, но это не простое число, а ближайшие простые — это 89 и 97. 89 ему как раз в момент празднования, 97 не может быть, потому что в день победы 1945 ему было менее или равно 19,78 лет. А день рождение у него примерно между 28 июня и 19 августа в субботу, т.е. дата рождения 28.06-19.08.1925, но опять же 90 — это не простое число, значит где-то у меня ошибка. Возможно, попробую, когда буду дома в нормальной обстановке. Или, возможно, кто-то подхватит вышенаписанное и доведет до конца

Поделиться сообщением


Ссылка на сообщение

1кб - 1024 байт, тоесть 1024 + это получается столько дней ему было на 8 мая 1945 ?

Если б там был знак равенства, то всё было бы очень просто

Поделиться сообщением


Ссылка на сообщение

Пробовал решить 1ю задачу, пока еду в метро. И никакие программы тут не нужны. Путаница возникла с простым числом, а именно то, что по моему рассчету, ему в год 70летия исполняется 90, но это не простое число, а ближайшие простые — это 89 и 97. 89 ему как раз в момент празднования, 97 не может быть, потому что в день победы 1945 ему было менее или равно 19,78 лет. А день рождение у него примерно между 28 июня и 19 августа в субботу, т.е. дата рождения 28.06-19.08.1925, но опять же 90 — это не простое число, значит где-то у меня ошибка. Возможно, попробую, когда буду дома в нормальной обстановке. Или, возможно, кто-то подхватит вышенаписанное и доведет до конца

 

Очень и очень неплохо, хоть кто-то пробует решать. 

Вот тебе главная подсказка: прочти, что именно за числа в сумме (ещё одна подсказка) дадут тебе число простое. 

 

 

 Если число, образованное из чисел, соответствующих номеру дня в месяце и номеру месяца его рождения, является простым

 

 

p.s. с датой рождения, практически, угадал, но промежуток чуточку не верен. 

Изменено пользователем aka19972

Поделиться сообщением


Ссылка на сообщение

Добавлены второе и третье задания [ красным выделены входные и выходные данные, синим - само задание].
Добавлено дополнительное задание на
20.000.000 $.

Желаю удачи!
 

Поделиться сообщением


Ссылка на сообщение

1.  LOTOS
2. 3 задание.
3. http://rghost.ru/60447515

Т.к не было уточнения насчет проверки веса и кол-ва, сделал по-своему.(Если что-то не так - исправлю)  

P.s:

1) Если пользователь вводит кол-во человек больше 20 или меньше 1, программа выдает 0(то бишь false).

2) Если пользователь вводит вес меньше 10 или больше 120, программа этот вес не учитывает.

Поделиться сообщением


Ссылка на сообщение

1. Ваш ник.  .R1k.
2. Количество выполненных заданий и их номера.  Задание №2
3. Архив с заданием (заданиями).   #include iostream


using namespace std;

int main() {
__int n;
__vector v;

__cin >> n;
__v.resize(n);

__for (int i = 0; i < n; ++i) {
____cin >> v;
__}

__int mindiff = 1e9;
__for (int mask = 0; mask < (1 << n); ++mask) {
____int diff = 0;
____for (int i = 0; i < n; ++i) {
______if (mask & (1 << i)) {
________diff += v;
______} else {
________diff -= v;
______}

______if (diff < 0) {
________diff = -diff;
______}

______if (diff < mindiff) {
________mindiff = diff;
______}
____}
__}

__cout << mindiff << endl;}

Поделиться сообщением


Ссылка на сообщение

1. Ваш ник.  .R1k.

2. Количество выполненных заданий и их номера.  Задание №2

3. Архив с заданием (заданиями).   #include iostream

using namespace std;

 

int main() {

__int n;

__vector v;

 

__cin >> n;

__v.resize(n);

 

__for (int i = 0; i < n; ++i) {

____cin >> v;

__}

 

__int mindiff = 1e9;

__for (int mask = 0; mask < (1 << n); ++mask) {

____int diff = 0;

____for (int i = 0; i < n; ++i) {

______if (mask & (1 << i)) {

________diff += v;

______} else {

________diff -= v;

______}

 

______if (diff < 0) {

________diff = -diff;

______}

 

______if (diff < mindiff) {

________mindiff = diff;

______}

____}

__}

 

__cout << mindiff << endl;}

 

слова : архив с заданием - ничего не говорят? 

Поделиться сообщением


Ссылка на сообщение

1.  LOTOS

2. 3 задание.

3. http://rghost.ru/60447515

Т.к не было уточнения насчет проверки веса и кол-ва, сделал по-своему.(Если что-то не так - исправлю)  

P.s:

1) Если пользователь вводит кол-во человек больше 20 или меньше 1, программа выдает 0(то бишь false).

2) Если пользователь вводит вес меньше 10 или больше 120, программа этот вес не учитывает.

 

Не заметила твоего задания. 

Слишком много ненужных файлов у тебя. 

Того же исходного кода и программы - было бы достаточно.  

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.

  • Сейчас на странице   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×