Вниз  Разбор интересных задач
- 19.01.2011 / 16:34
aleksey
  Пользователь

aleksey 
Сейчас: Offline
И ещё неплохая задачка с подковыркой:
Сумма.
Были загаданы два целых числа: a и b. Вам сообщили сумму всех чисел от а до b, но не сообщили сами числа.
Требуется написать программу, которая по заданному числу s найдёт все такие пары чисел a и b, что сумма чисел от a до b равна s.
- 19.01.2011 / 20:28
aleksey
  Пользователь

aleksey 
Сейчас: Offline
В пятницу(21.01.11) выложу своё решение
- 19.01.2011 / 20:40
MG42
  Пользователь

MG42 
Сейчас: Offline
Задача на МВ
10 data 5,8,8,8,4,4,25
20 reаd a%
напишите алгоритм програмы который выводит по порядку через print следуещие:
5-число 5
1-повторяется 1раз

8-число 8
3-повт-ся 3раз

4
2

25
1
награда: отдам все монеты :)
- 19.01.2011 / 20:59
XakepPRO
  Пользователь

XakepPRO 
Так, расступитесь, ибо сейчас будет небольшой набор очень нужных (для меня) программ. Начнём:

Напишите программу, которая решает следующую задачу. Программа может быть написана на языках программирования Pascal, Basic, C, C++, Java, C#, PHP, Python.

Напишите программу, которой на стандартный вход подается последовательность символов. Длина последовательности заранее не известна. Признаком конца последовательности считается точка. Программа должна вывести десятичную запись числа, минимального среди всех чисел, чьи записи можно составить из всех цифр, встретившихся во входной последовательности. Если цифр в последовательности нет, программа выводит число -1. При наличии цифр каждая из них должна быть использована ровно столько раз, сколько раз она встретилась в тексте. Исключением являются случаи, когда все цифры в последовательности являются нулями. В таких случаях программа выводит 0, т. е. ответ записывается одной цифрой. В остальных случаях выдаваемая запись числа не может начинаться с нуля. То есть, в записи результата не должно быть незначащих нулей. Известно, что количество вхождений любой цифры во входную последовательность не превышает 32000. В программе должен быть реализован эффективный алгоритм, не предполагающий хранение всей входной последовательности и всего результата в памяти. Суммарный размер используемых в программе переменных не должен быть пропорционален длине входной последовательности или длине результата. Дополнительные файлы не использовать. Пример работы программы:
Ввод: A9B8C7D6E5F4G3H2.
Вывод: 23456789

За неё дам 400 монет. Срок: до 23 января.

Изменено XakepPRO (19.01 / 21:00) (всего 1 раз)
- 19.01.2011 / 21:01
XakepPRO
  Пользователь

XakepPRO 
Другая задача:

Напишите программу, которая решает следующую задачу. Программа может быть написана на языках программирования Pascal, Basic, C, C++, Java, C#, PHP, Python.

Светофор на перекрестке работает в следующем режиме: T1 секунд горит красный свет, затем T2 секунд горит красный и желтый свет одновременно, затем T3 секунд горит зеленый свет, затем T4 секунд горит мигающий зеленый свет, затем T5 секунд горит желтый свет, после чего цикл работы светофора начинается заново.
Определите, сколько секунд горела зеленая лампа светофора в момент, когда красный свет загорится в N раз. Входные данные задаются на стандартном потоке ввода (вводятся с клавиатуры) и представляют собой 6 неотрицательных целых чисел T1, T2, T3, T4, T5, N. Число T4 — четное. Ответ напечатайте на стандартный поток вывода (выведите на экран).

Пример входных данных
2 2 2 2 2 1

Правильный ответ для этих входных данных
3

Дам 300 монет. Срок: до 22 января.
- 19.01.2011 / 21:04
XakepPRO
  Пользователь

XakepPRO 
Еще одна задача (более лёгкая), возможна непрограммная форма записи:

Рассмотрим десятичную запись числа π. Возьмем первые 1415 знаков после десятичной точки и рассмотрим все возможные пары цифр, идущих подряд. Например, 14, 41, 15, 59, 92 ... Какая из этих пар встречается чаще всего? Если таких пар несколько, найдите пару с максимальным значением (рассматривая ее как целое число в [0; 99]). Сколько раз встречается эта пара? Опишите, каким образом был получен ответ.

Дам 250 монет (можно и больше). Срок: до 22-23 января.
- 19.01.2011 / 22:48
Freddy
  Пользователь

Freddy 
Сейчас: Offline
aleksey (19.01.2011/16:34)
И ещё неплохая задачка с подковыркой:Сумма.Были загаданы два целых числа: a и b. Вам сообщили сумму всех чисел от а до b, но не сообщили сами числа.Требуется написать программу, которая по заданному ч
уравнение s = (a+b)*n/2, где n - кол-во членов арифметической прогрессии от a до b, его можно записать в виде: s=(a+a+n-1)*n/2 , т. к. по формуле n-члена b=a+(n-1)*d и d=1. Выражаем отсюда a, a=s/n-(n-1)/2. Т.к. s, a и b - целые числа, то s делится на n нацело и n - нечётное число (в противном случае (n-1)/2 не является целым числом). Остаётся найти значения n, удовлетворяющие этим условиям, посчитать для каждого n значения a и b.
  1. package javaapplication1;
  2.  
  3. import java.util.Stack;
  4.  
  5. public class Main {
  6.  
  7.     private Stack<Integer> stack;
  8.     private int a, b;
  9.     private boolean negative; // true, if sum value is negative
  10.  
  11.     public Main(int sum) {
  12.         if (sum == 0) {
  13.             System.out.print("a=infinity, b=-infinity\n");
  14.             return;
  15.         }
  16.         negative = sum < 0;
  17.         sum = Math.abs(sum);
  18.         stack = new Stack<Integer>();
  19.         findFactors(sum);
  20.         while (!stack.empty()) {
  21.             calculateVariables(sum, stack.pop());
  22.             printValues();
  23.         }
  24.     }
  25.  
  26.     private void printValues() {
  27.         System.out.print(a + " " + b + "\n");
  28.     }
  29.  
  30.     private void findFactors(int s) {
  31.         for (int m = 3; m <= s / 3; m += 2) {
  32.             if (s % m == 0) {
  33.                 stack.push(m);
  34.             }
  35.         }
  36.         if (s % 2 != 0) {
  37.             stack.push(s);
  38.         }
  39.     }
  40.  
  41.     private void calculateVariables(int s, int n) {
  42.         if (s == n) {
  43.             a = s / 2;
  44.             b = s / 2 + 1;
  45.         } else {
  46.             a = s / n - (n - 1) / 2;
  47.             b = a + n - 1;
  48.         }
  49.         if (negative) {
  50.             a = -a;
  51.             b = -b;
  52.         }
  53.         if ((double) a / b < 0) {
  54.             if (a < 0) {
  55.                 a = -a + 1;
  56.             } else {
  57.                 b = -b + 1;
  58.             }
  59.         }
  60.     }
  61.  
  62.     public static void main(String[] args) {
  63.         Main main = new Main(Integer.parseInt(args[0]));
  64.     }
  65. }


Изменено Freddy (19.01 / 22:50) (всего 1 раз)


Прикрепленные файлы:
JavaApplication(…).jar (2.69 кб.) Скачано 254 раза
- 19.01.2011 / 22:51
aleksey
  Пользователь

aleksey 
Сейчас: Offline
XakepPRO, появилась идея по 3 задаче, но написать смогу только в пятницу, не раньше.
Кстати, а это задачи из интернет олимпиады? Вторая точно от туда.
- 19.01.2011 / 23:00
XakepPRO
  Пользователь

XakepPRO 
Алексей, да, олимпиады. У мя под ночь моск уже не варил, я условие прочитать даже не смог - переутомление.
- 19.01.2011 / 23:04
aleksey
  Пользователь

aleksey 
Сейчас: Offline
XakepPRO, ага условие первой задачи конкретно мозг выносит
Наверх  Всего сообщений: 751
Фильтровать сообщения
Поиск по теме
Файлы топика (34)