С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Теория и практика программирования
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.53/392: Рейтинг темы: голосов - 392, средняя оценка - 4.53
Phantom
Эксперт С++
3174 / 856 / 39
Регистрация: 29.12.2008
Сообщений: 952
1

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

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

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

Начну пожалуй с задачи, которая уже встречалась на этом форуме и стала уже классической:
#0. Поменять значения двух целочисленных переменных одного типа, не используя дополнительной переменной.
#1 Написать самую короткую программу без операторов ввода и операторов работы с файлами, которая в точности выводит на экран (или на печать) свой собственный текст (исходный код).
#2 Вводятся три числа A, B и C. Нужно распечатать их по убыванию. В программе использовать только один оператор switch и ничего больше.
первая взята с форума, вторая здесь, третья моя, недавно родилась, позабавил друзей.
11
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.06.2009, 21:49
Ответы с готовыми решениями:

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

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

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

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

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

132
Temoxa
10 / 10 / 3
Регистрация: 19.03.2010
Сообщений: 679
Записей в блоге: 2
Завершенные тесты: 1
11.02.2013, 13:53 121
А вот про цифры 1 4 5 6 я за 15 минут вот такое решение накидал... само как то пришло быстро! в шоке был=)

Кликните здесь для просмотра всего текста
(6-4)*(5+1) = 24


Верно же?)
0
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
11.02.2013, 13:54 122
Цитата Сообщение от Temoxa Посмотреть сообщение
Верно же?)
Нет. Ты получил 12, а не 24.
0
Temoxa
10 / 10 / 3
Регистрация: 19.03.2010
Сообщений: 679
Записей в блоге: 2
Завершенные тесты: 1
11.02.2013, 14:00 123
вот ппц)))) затупана словил)))) извиняйте) щас буду дальше думать))
0
Новичок
Модератор
1512 / 981 / 465
Регистрация: 17.07.2012
Сообщений: 4,979
Завершенные тесты: 3
19.02.2013, 23:06 124
Цитата Сообщение от Phantom Посмотреть сообщение
#0.Поменять значения двух целочисленных переменных одного типа, не используя дополнительной переменной.
Pascal
1
2
3
a:=a+b;
b:=a-b;
a:=a-b;
1
paskal
450 / 299 / 28
Регистрация: 15.08.2011
Сообщений: 922
01.04.2013, 21:58 125
Цитата Сообщение от Новичок Посмотреть сообщение
a:=a+b;
b:=a-b;
a:=a-b;
Если a+b достаточно большие чтоб вызвать переполнение, то результат будет неверным из за потери переноса. То есть ответ в общем случае неверный.
Надо так:
Кликните здесь для просмотра всего текста

a = a xor b;
b = b xor a;
a = a xor b;
0
Evg
Эксперт CАвтор FAQ
19360 / 7209 / 538
Регистрация: 30.03.2009
Сообщений: 20,160
Записей в блоге: 30
01.04.2013, 22:22 126
Цитата Сообщение от paskal Посмотреть сообщение
Если a+b достаточно большие чтоб вызвать переполнение, то результат будет неверным из за потери переноса. То есть ответ в общем случае неверный.
Надо так:
Кликните здесь для просмотра всего текста

a = a xor b;
b = b xor a;
a = a xor b;
В подтверждение своей теории подбери пару чисел, обмен которых не сработает через сложения, но сработает через xor'ы
1
paskal
450 / 299 / 28
Регистрация: 15.08.2011
Сообщений: 922
01.04.2013, 23:29 127
Гм. Проверил. И правда перенос сперва теряется, а потом еще раз теряется, что в результате дает правильное число.
0
DJMC
0 / 0 / 0
Регистрация: 09.04.2014
Сообщений: 3
10.04.2014, 16:33 128
Подскажите реально ли написать программу которая бы могла посчитать вероятность ошибок(цифр) от 1 до 3.
вот чтобы было проще говорить количество ошибок за март месяц, можно как то высчитать вероятность следующей ошибки?
Скачать ошибки.xls
0
taras atavin
4205 / 1768 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
10.04.2014, 16:38 129
Цитата Сообщение от paskal Посмотреть сообщение
Если a+b достаточно большие чтоб вызвать переполнение, то результат будет неверным из за потери переноса. То есть ответ в общем случае неверный.
Надо так:
Кликните здесь для просмотра всего текста
a = a xor b;
b = b xor a;
a = a xor b;
Так ведь ксоры теряют те же самые переносы на всех разрядах, так что если уж даже через них работает, то перенос здесь значения не имеет.
0
D1986
0 / 0 / 0
Регистрация: 19.12.2014
Сообщений: 11
07.03.2015, 12:42 130
F(0,1,8,10,11,15,16,17,18,20,24,28,30) и,или,не. может кто-нибудь помочь с решением? контрольная по теории автоматов.
0
Mr_K
11 / 11 / 0
Регистрация: 19.03.2016
Сообщений: 64
30.05.2017, 02:13 131
Задача #0. Поменять значения двух целочисленных переменных одного типа, не используя дополнительной переменной.

В условии не запрещается создавать функцию, поэтому в SPL можно написать так:
C#
1
2
f(x,y) <= y,x
a,b = f(a,b)
Добавлено через 11 минут
Цитата Сообщение от Ultrator Посмотреть сообщение
Откройте Кнута, там таких зада-ач...
Вот, одна, помню:
Пусть заданы 3 числовые переменные: A, B, C.
Сделать так, чтобы в C появилось значение, равное min(A, B), при этом, не используя условных переходов.
c=min(a,b)

или я что-то не понял из условия?
0
COKPOWEHEU
1110 / 782 / 183
Регистрация: 09.09.2017
Сообщений: 3,395
15.09.2017, 08:47 132
Цитата Сообщение от Ultrator Посмотреть сообщение
Сделать так, чтобы в C появилось значение, равное min(A, B)
Кликните здесь для просмотра всего текста
C = A*(A<B) + B*(B<A);
0
HardRender
0 / 0 / 0
Регистрация: 07.08.2017
Сообщений: 20
15.02.2018, 18:44 133
Даны две системы координат. Из центра каждой системы координат выходит по 8 векторов под совершенно разными углами.
Вектор 1 первой системы координат пересекается с вектором 1 второй системы координат в точке (-1,0,0). Первая система координат равна мировой системе координат. Найти положение и поворот второй системы координат относительно первой, чтобы все 8 векторов координатных систем попарно пересекались. 1 с первым, второй со вторым, третий с третьим и так далее за один проход. (составить математическое уравнение не прибегая к алгоритмам языка программирования)
0
15.02.2018, 18:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.02.2018, 18:44

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

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

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


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

Или воспользуйтесь поиском по форуму:
133
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru