| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Интересные и занимательные задачи по программированию > Решаем интересные задачи |
| Автор: Антоха 17.11.2006, 00:16 | ||
| Извените если не там создал тему, но ничего более подходящего не нашёл. Предлагаю здесь писать интересные математические и пр. задачи для нахождения их решения с помощью разных языков программирования(пишите решения здесь, на том языке который Вам ближе). И предлагаю закрепить эту тему, т.к. мне кажется особенно для начинающих программистов очень полезно поломать голову впринципе не над сложными задачками, для развития мышления. А может ктото просто просматривая решения в этой теме чтото новое поймёт для себя. Извините если бонально, но я сам начинающий программист и мне кажется такие задачки помогают тренировать свои мозги Ну раз я создал тему я и начну: Задача №1: Бутылка с пробкой стоит 11 копеек. Бутылка на 10 копеек дороже пробки. Сколько стоит пробка? Я сделал эту задачку на VBA:
Задача №2(посложнее): Два города А и В находятся на расстоянии 300 км друг от друга.Из этих городов одновременно выезжают друг другу навстречу 2 велосипедиста и едут,не останавливаясь, cо скоростью 50 км/ч.Вместе с первым велосипедистом из города А вылетела муха, пролетающая в час 100 км.Муха опережает первого велосипедиста,летит навстречу второму. Встретив его,она сразу поварачивает назад к первому.Повстречав его,опять летит обратно навстречу велосипедисту В,и так продолжалось до тех пор пока велосипедисты не встретились. Сколько километров пролетела муха? Пока решаю... Ждём Ваших задачек |
| Автор: Fazil6 17.11.2006, 00:33 | ||
| Задача№1 а чего так сложно? Пробка = (11 - 10)/2 Добавлено @ 00:47
|
| Автор: Антоха 17.11.2006, 02:05 |
Ты прав! Но не я не сразу до этого додумался например, и мне интересней чем считать это написать код, надо ведь с малого начинать чтобы мозги расшивеливать Ещё задача: Запишем треугольником числа (в n-й строке стоит n чисел n): 1 2 2 3 3 3 4 4 4 4 ... Теперь выписываем их в строку сверху вниз, получаем: 1 2 2 3 3 3 4 4 4 4 .... Какое число стоит на К-ом месте? К-произвольно введённое пользователем число. |
| Автор: Dude03 17.11.2006, 11:07 | ||
Вроде бы вот так
|
| Автор: Sartorius 17.11.2006, 11:15 |
| Антоха, молодец, поток полезный Вот вам еще задачка Дано три кувшина 10, 7 и 3 литра. Первый полностью заполнен молоком ... Пользуясь только этими тремя кувшинами разделить молоко пополам. |
| Автор: Fazil6 17.11.2006, 12:00 | ||
Прежде чем бросаться программировать, задачу нужно тщательно продумать. |
| Автор: Антоха 26.11.2006, 23:44 |
| Квадратный корень Ограничение времени: 1.0 секунды Ограничение памяти: 16 МБ Число x называется квадратным корнем числа a по модулю n (root (a, n)) тогда и только тогда когда x * x = a (mod n) Напишите программу, которая находит все значения квадратных корней числа a по модулю n. Исходные данные В первой строке находится одно число K – количество тестов (K <= 100000). Каждая следующая строка представляет собой отдельный тест, который содержит два числа – a и n (a, n – натуральные, 1 <= a, n <= 32767, n простое, a и n – взаимно простые). Результат Для каждого теста программа должна вычислить все возможные значения root (a, n) в диапазоне (0,n-1) и вывести их в возрастающем порядке в одной строке, разделяя одним пробелом. Если для текущего теста корней не существует, программа должна вывести в отдельной строке сообщение ‘No root’. Пример исходных данных 5 4 17 3 7 2 7 14 31 10007 20011 Пример результата 2 15 No root 3 4 13 18 5382 14629 |
| Автор: Антоха 27.11.2006, 00:09 |
| Когда Вито Маретти пишет важное письмо, он его шифрует. Не очень надежным методом, но достаточным для того, чтобы ни один детектив не понял ни слова. Шефу полиции такое положение дел очень не нравится. Он хочет взломать шифр Вито и обещает забыть о всех Ваших грехах, если Вы сделаете это для него. Детективы расскажут Вам, как устроен шифр. В шифре каждое слово шифруется отдельно. Рассмотрим шифрование на примере слов, состоящих только из строчных латинских букв. В начале каждая буква заменяется соответствующим ей числом: a на 0, b на 1, c на 2, ..., z на 25. После этого к первому числу добавляется 5, ко второму числу добавляется первое число, к третьему — второе и т.д. После этого если какое-то число превосходит 25, то оно заменяется остатком от деления этого числа на 26. И, наконец, числа обратно заменяются буквами. Зашифруем слово secret: Шаг 0. s e c r e t Шаг 1. 18 4 2 17 4 19 Шаг 2. 23 27 29 46 50 69 Шаг 3. 23 1 3 20 24 17 Шаг 4. x b d u y r В итоге получилось слово xbduyr. Исходные данные Дано зашифрованное слово, состоящее из строчных латинских букв, длиной не более 100 символов. Результат Выведите исходное слово. Пример исходных данных xbduyr Пример результата secret |
| Автор: ivashkanet 30.11.2006, 18:23 | ||
Математика: n-ая цифра начинается с n(n-1)/2 +1 месте (можете проверить) Осталось в целых числах решить неравенство: n(n-1)/2 +1 <= k < n(n+1)/2 +1 Решаем и получаем, что n принадлежит [(-1 + sqrt(1+8k))/2 ; (1 + sqrt(1+8k))/2) |
| Автор: SelenIT 4.12.2006, 00:28 | ||
Велосипедисты сближаются со скоростью 100 км/ч (терминаторы, не иначе;), поэтому встретятся они через 300/100 = 3 часа после старта, стало быть, муха, вне зависимости от ее траектории, налетает к этому моменту 3*100 = 300 км. |
| Автор: AligatorV 5.12.2006, 21:08 |
| Ученые астрономы, сообщили правительство, что ровно через T секунд на планете Олимпиада начнется метеоритный дождь. Правительство планеты срочно начало эвакуацию людей и важного оборудования - телескопических установок. Для защиты телескопу его нужно транспортировать в специально отведенное место - хранилище. В одном хранилище может вместиться лишь один телескоп. Необходимо рассчитать максимальное количество телескопов которые можно успеть спрятать к началу метеоритного дождя. Входные данные (файл METEOR.DAT): В первой строке число T - количество секунд через которую метеориты упадут на планету. Во второй строке число N - количество телескопов. В третьей строке находится 2*N чисел - координаты телескопов (x, в) В четвертой строке число M - количество хранилищ. В пятой строке находится 2*M чисел - координаты хранилищ (x, в) В шестой строке число V - скорость транспортировки телескопов. Примечание: 0<T<1000000 ; 0<N,M<100 ; -30000 <= x,y <=30000 ; 0<V<1000 T, N, M, x, в - цели. Выходные даны: (файл METEOR.SOL): В единственную строку файла записать максимальное количество телескопов, которые могут быть спрятанные к началу падения метеоритов. Пример METEOR.DAT: 10 4 1 7 3 7 5 7 100 100 2 2 7 4 7 0.1 Пример METEOR.SOL: 2 |
| Автор: AligatorV 6.12.2006, 00:30 |
| Взрывное устройство, которое было заложено неизвестным террористом, имеет N - лампочек, и M - переключателей. Каждый переключатель изменяет состояние некоторых лампочек на противоположный. Для обезвреживания бомбы, необходимо выключить все лампочки. Напишите программу, которая спасет мир. Входные данные: (файл BOMBA.DAT): В первой строке число N. (0<N<=100) Во второй строке содержится N чисел, которые помечают состояние каждой лампочки (0 - выключенная, 1 - включенная). В третьей строке содержится число M. (0<M<=100) В каждом из следующих M строк содержится число K (количество лампочек состояние которых изменяет данный переключатель) и K чисел - номера соответствующих лампочек. Выходные даны: (файл BOMBA.SOL): Если бомбу обезвредить невозможно, запишите в исходный файл "NO" (без кавычек). Если возможно спасти мир, то в первую строку запишите "YES" (без кавычек), а во вторую строку запишите номера переключателей которые необходимо задействовать. Пример BOMBA.DAT: 5 0 1 1 0 1 4 3 2 3 4 3 1 4 5 2 4 5 2 2 4 |
| Автор: korob2001 6.12.2006, 02:44 | ||||||||
| Извиняюсь, я тут немного измеил условие, не в свою пользу. Только прозьба не обижаться, я не хочу никого обидеть, особенно автора этой задачи, очень интересная задача. Я лишь попытался усовершенствовать как условие, так и решение. 1. Отказался от данных первой и третьей строки, так как счёл их лишними. Насколько я понял, то первая строка содержит кол-во перключателей, что легко вычесляется программно таким образом:
но и это не понадобилось, для решения данной задачи. 2. Если третий параметр - это общее кол-во вариантов разминирования, то это тоже не нужный параметр, так как код ниже пометит предложением - YES, все варианты которые подошли для разминирования, не в зависимости от того, насколько много варинтов в файле, пусть даже 50GB и никогда не убъёт оперативную память, лишь бы хватило дискового пространства. 3. Что бы не уничтожать данные в файле, я решил сохранять результаты в отдельный файл, с таким же именем + окончание ".temp", т.е. "bomba.dat.temp". Если кому-то понадобится всёже перезаписывать исходный файл "bomba.dat", достаточно раскоментировать последние 2 строки. Мой файл "bomba.dat" выглядет так:
где первая строка - это переключатели бомбы, а все остальные (их может быть сколько угодно) - предлагаемые варианты разминирования. Вот код:
Здесь так же обрабатываются ошибки, потому код выглядит немного объёмным. PS: На выходе у меня получился такой результат:
|
| Автор: Baltazar5000 6.12.2006, 20:02 |
| !!!ПРОГРАММА НА C++!!! Найти наименьший номер элемента последовательности, для которого выполняется условие b < E. Вывести на экран этот номер и все элементы, где i=1,2,3,...n. a(энное)=(a(энное)-1)/(n^2+1) b=/a(энное)-a(энное-1)/ a(1)=5.1 E=10^-7 !!!!!Решить, используя циклы While или For или Do while или все вместе!!!!! !!!ПРОГРАММА НА C++!!! Срочно помогите написать. |
| Автор: ivashkanet 6.12.2006, 20:46 |
| Baltazar5000, это задача неинтересная Тебе в http://forum.vingrad.ru/index.php?showforum=142 |
| Автор: Baltazar5000 6.12.2006, 21:37 |
| Ну раз не интересная решите, please. |
| Автор: AligatorV 7.12.2006, 00:27 |
| 2 korob2001 А если не изменять условия? |
| Автор: korob2001 7.12.2006, 14:15 | ||
Тогда код получится менее гибкий. ;(((((
|