Форум программистов, компьютерный форум, киберфорум
Теория программирования
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/622: Рейтинг темы: голосов - 622, средняя оценка - 4.95
Эксперт С++
 Аватар для Phantom
3189 / 869 / 39
Регистрация: 29.12.2008
Сообщений: 951

Нетривиальные задачи по программированию

17.06.2009, 21:49. Показов 125554. Ответов 132
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Наверное каждый из нас сталкивался с нетривиальными задачами (на олимпиадах, в Интернете, подкидывали друзья, может у кого-то родилась своя). Речь идет не о каких-то сложных задачах, а о интересных головоломках, которые решались бы с помощью какого-нибудь нетривиального трюка, требовали соображалки и вызывали бы интерес и улыбку.
Эти задачи не забываются и я предлагаю вспомнить и выложить их здесь. Таким образом, возможно, соберется небольшой "задачник" для уважаемых форумчан. Это будет полезно. Каждый сможет размять мозг и проверить знания, решая такие задачки. В конце концов это просто забавно Чтобы не было флуда и беспорядка, попробую набросать правила топика:
* Задача должна быть действительно оригинальной и интересной, своеобразной головоломкой.
* Автор, который публикует задачу, должен располагать её решением.
* Решение задачи не должно быть слишком большим, а задача - слишком трудоемкой и требующей много времени.
* Допускаются известные и классические задачи.
* Публиковать любые решения в топике только под тегом CUT.

Начну пожалуй с задачи, которая уже встречалась на этом форуме и стала уже классической:
#0. Поменять значения двух целочисленных переменных одного типа, не используя дополнительной переменной.
#1 Написать самую короткую программу без операторов ввода и операторов работы с файлами, которая в точности выводит на экран (или на печать) свой собственный текст (исходный код).
#2 Вводятся три числа A, B и C. Нужно распечатать их по убыванию. В программе использовать только один оператор switch и ничего больше.
первая взята с форума, вторая здесь, третья моя, недавно родилась, позабавил друзей.
12
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.06.2009, 21:49
Ответы с готовыми решениями:

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

задачи по программированию
Задача А. Правильное управление (Online) Задачу добавил: alef Успешно сдано решений: 6 Предыстория Много лет тому вперед в...

Задачи по программированию
Добрый вечер друзья, помогите пожалуйста с задачами по С++: 1)Дана матрица 6х6 целого типа. Создать одномерный массив, содержащий...

132
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
18.06.2009, 22:14
Студворк — интернет-сервис помощи студентам
Ты ещё вот так напиши: "4 * 6 // 1 5" и скажи, что за двумя слэшами камменты идут
4
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
18.06.2009, 22:21
Ну, если на Си(++), то так и есть.
Надо подумать, имеет ли право на жизнь и такое решение..... Ибо оно также не противоречит условию задачи - если запись реализуется на языке программирования; а в условии нигде не сказано, что два знака деления не могут идти подряд, образуя комментарий в Си-стиле. Тогда на Си есть и альтернативный вариант с /* */.
0
19 / 19 / 4
Регистрация: 30.04.2009
Сообщений: 142
18.06.2009, 22:42
и расставить между ними знаки операций (плюс, минус, умножить, делить) и скобки (если они нужны)
Про возведение в степень тут вроде ничего не сказано
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
18.06.2009, 22:48
Цитата Сообщение от Sagara Посмотреть сообщение
Про возведение в степень тут вроде ничего не сказано
Он просто издевается, не поддавайся на провокации
1
 Аватар для Humanitis
176 / 168 / 27
Регистрация: 12.01.2009
Сообщений: 430
19.06.2009, 10:02
Решение
6/(5/4-1)
4/(1-5/6)

Evg,за задачу и правда спасибо
6
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
19.06.2009, 10:04
А вот это уже правильно
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
19.06.2009, 12:02
Humanitis, целый час просидел..так и не решил... уже начал думать что развод!)
респект тебе!
0
 Аватар для Jazon_deenAlt
4117 / 999 / 191
Регистрация: 09.04.2009
Сообщений: 4,223
19.06.2009, 12:28
Evg, блин про цыферки жестокая задача((( заснуть не мог, пока не доперло до меня) спасибо)
0
14 / 10 / 1
Регистрация: 28.04.2009
Сообщений: 219
19.06.2009, 15:13
Jazon_deenAlt, ну да, да.
(Мне вот ещё другой вариант тогда пришёл сразу, с преобразованием в двоичные векторы с $A и $B первых единиц. В Кнуте же, кроме первого (такой как у всех нас, с модулем) ещё два, совсем других...)
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
19.06.2009, 21:33
Evg,не увиливай от ответа. Мое решение абсолютно правильное и абсолютно соответствует всем требованиям задачи:
1. Даны 4 числа: 1, 4, 5, 6 - выполнено.
2. Нужно их написать в произвольном порядке - выполнено.
3. расставить между ними знаки операций (плюс, минус, умножить, делить) - выполнено.
4. скобки (если они нужны), - выполнено (скобки не нужны).
5. чтобы результат равнялся 24. - выполнено.
6. Каждое число должна быть использована ровно 1 раз. - выполнено.
7. Двузначные числа составлять нельзя. - выполнено.

Укажи конкретно, какому именно требованию противоречит мое решение?
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
19.06.2009, 21:52
CheshireCat, извини, спортить с тобой не хочу. Ибо смысла в этом не вижу, поскольку твоё желание вижу в одном из двух:
1. Ты не смог решить задачу, и теперь занимаешься ерундой
2. Я тебе не нравлюсь и у тебя есть жалание надо мной поиздеваться
0
Эксперт С++
2924 / 1274 / 114
Регистрация: 27.05.2008
Сообщений: 3,465
19.06.2009, 21:59
Спасибо за ответ. Вопрос закрыт.
0
6 / 6 / 0
Регистрация: 27.06.2009
Сообщений: 16
27.06.2009, 22:56
попробуйте решить следующую задачку
есть код на паскале
Pascal
1
2
3
4
5
6
7
8
for i:=1 to 6 do
begin
  case i of
    1,3,5:x:=1;
    2,4,6:x:=128;
  end;
  writeln(x);
end;
нужно представить его в виде
Код:

Pascal
1
2
3
4
for i:=1 to 6 do
begin
  writeln(формула);
end;
где формула - выражение, состоящее из двух операций, так, чтобы результат выполнения был одинаковым.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
27.06.2009, 23:49
Чтоб в две операции - надо подумать
0
 Аватар для EnzoMatrix
121 / 121 / 14
Регистрация: 14.03.2009
Сообщений: 462
27.06.2009, 23:59
Цитата Сообщение от NuM Посмотреть сообщение
где формула - выражение, состоящее из двух операций, так, чтобы результат выполнения был одинаковым
побитовый сдвиг....
128^(младший бит)
^-возведение в степень

Добавлено через 4 минуты 7 секунд
упс, косяк, перепутал в каком случае 128, а в каком 1
вот
остаток от деления в помощь
0
6 / 6 / 0
Регистрация: 27.06.2009
Сообщений: 16
28.06.2009, 00:08
EnzoMatrix, в паскале нет операции возведения в степень
вот операции, которы можно использовать: +, -, *, div, mod, and, or, xor, not, shr, shl
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
28.06.2009, 11:36
Вот что-то накарябал.
Pascal
1
2
3
4
5
6
7
8
uses crt;
var i:integer;
begin
clrscr;
for i:=1 to 6 do
writeln((byte(255+i mod 2)div 2)+1);
readln
end.
0
6 / 6 / 0
Регистрация: 27.06.2009
Сообщений: 16
28.06.2009, 11:52
Puporev, в вашем решении используется 4 операции(+, mod, div, +) и byte, а нужно сделать используя только 2 операции из списка в моем предыдущем посте
0
Почетный модератор
 Аватар для Puporev
64319 / 47615 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
28.06.2009, 11:56
Извини, внизу не прочитал.
0
Эксперт С++
 Аватар для Phantom
3189 / 869 / 39
Регистрация: 29.12.2008
Сообщений: 951
28.06.2009, 12:16  [ТС]
Puporev, прячьте, пожалуйста, решение под тегом CUT, чтобы ненароком не отбить интерес у тех, кто решает параллельно или будет решать позже.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.06.2009, 12:16
Помогаю со студенческими работами здесь

Задачи по программированию в С++
Не могу никак понять программирование на С++ ! Помогите решите мне хоть одну из этих задач я постараюсь понять! П.5.16.Правил ...

Олимпиадные задачи по программированию
Пробуйте :) Окружной этап всероссийской олимпиады школьников по информатике Москва, 2 декабря 2012 Во всех задачах входные...

Олимпиадные задачи по программированию
Здравствуйте, где можно найти задача по программирования и их решение.

Ищу задачи по программированию c++
Надо сборник задач по c++ Чтобы были задачи на циклы, масивы, функции. Желательно с объяснением или решением

Подскажите задачи по программированию
Всем, привет. Начал изучать C++ и qt. А задачи самому себе не придумать. Хоть тресни. Не подкинет ли кто-нибудь интересные задачи. Просто в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru