Re[4]: Интересные задачки для программистов
От: Максим Алексейкин США  
Дата: 30.10.06 16:56
Оценка:
Здравствуйте, Smal, Вы писали:

S>Здравствуйте, Максим Алексейкин, Вы писали:


МА>>Здравствуйте, Smal, Вы писали:


МА>>на пальцах здесь
Автор: Максим Алексейкин
Дата: 06.10.06

S>ИМХО, это решение неверно. Непонятно, почему нам удасться закрыть хотябы один
S>диапазон вида [kn, (k+1)n].

S>

S>даже если не закрывать всех чисел в текущем диапозоне, а переходить к следующему, то с каждым названным числом мы будем закрывать числа во всех диапозонах впереди текущего — рано или поздно закроем все и придется двигаться назад.

S>Всегда есть некоторое простое число, которое больше всех названных чисел. Оно не покрыто не одним числом.
S>А почему его можно покрыть линейной комбинацией этих чисел, совершенно непонятно.


меня не интересуют простые числа, я не раскладываю их на множители
любое хоть простое хоть не простое число войдет в один их диапозонов [kn, (k-1)n) и будет закрыто при переборе максимум n чисел из диапозона [n, number-1].
мы можем использовать числа несколько раз, т.е.
для [n, 2n) и [2n, 3n)

2n = n + n
2n + 1 = n + (n + 1)
2n + 2 = n + (n + 2)
...
2n + (n — 1) = n + (n + (n — 1))

ну и общий случай [kn, (k-1)n)

kn = n + n + .... n k times
kn + 1 = n + n + .... + n + 1

или я не прав?
Re[5]: Интересные задачки для программистов
От: Максим Алексейкин США  
Дата: 30.10.06 17:06
Оценка:
МА>ну и общий случай [kn, (k-1)n)

МА>kn = n + n + .... n k times

МА>kn + 1 = n + n + .... + n + 1

может коряво объясняю, смысл: если закрыли (n+c), то закрыли все (kn + c) где k from [2, бесконечность], а c константа
Re[4]: Интересные задачки для программистов
От: Аноним  
Дата: 30.10.06 19:55
Оценка:
я думаю, что стоит пирог разрезать пополам по высоте.
Re[6]: Интересные задачки для программистов
От: int64 Россия  
Дата: 31.10.06 09:42
Оценка:
Рассказываю, как делится пирог.

Первый делит пирог на 3 части.
Два других юзера делают заявки на полученные куски.
Если заявки разные, каждый берет свой кусок — задача решена.
Если заявки совпали:
--Эти два юзера делят "конфликтный" кусок между собой.
--Делают заявки на двух оставшихся кусках.
----Если заявки совпали, делят "конфликтный" кусок между собой — задача решена.
----Если заявки разные, делят каждый свой заявленный кусок с первым юзером.


Алгоритм деления с заявками можно положить на любое (n) количество юзеров:
Первый юзер делит на n частей.
Далее каждый "конфликтный кусок" делятся на n-1 частей между m юзерами. m (1<m<n) — это количество претендентов на кусок. Каждый из этих m юзеров получает разную долю (или одинаковую, если m=n-1). Остальные куски ("конфликтные" и не только) делятся, с учетом: кто сколько долей уже имеет.
Итд.
Re[6]: Интересные задачки для программистов
От: Smal Россия  
Дата: 31.10.06 10:43
Оценка:
Здравствуйте, Максим Алексейкин, Вы писали:

МА>может коряво объясняю, смысл: если закрыли (n+c), то закрыли все (kn + c) где k from [2, бесконечность], а c константа

Да. Только почему будут названы хотя бы два числа стоящих рядом?
Пример: всегда называть числа делящиеся на 4.
(Я понимаю, что в этом случае задача сводится к исходной.)

А если каждое следующее число будет, скажем, (n! + 1), где n > 3. Или что-то в этом роде..?
С уважением, Александр
Re[7]: Интересные задачки для программистов
От: Максим Алексейкин США  
Дата: 31.10.06 10:55
Оценка:
Здравствуйте, Smal, Вы писали:

S>Здравствуйте, Максим Алексейкин, Вы писали:


МА>>может коряво объясняю, смысл: если закрыли (n+c), то закрыли все (kn + c) где k from [2, бесконечность], а c константа

S>Да. Только почему будут названы хотя бы два числа стоящих рядом?
S>Пример: всегда называть числа делящиеся на 4.
S>(Я понимаю, что в этом случае задача сводится к исходной.)

S>А если каждое следующее число будет, скажем, (n! + 1), где n > 3. Или что-то в этом роде..?


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

(n! + 1) = kn + c — это всегда выполнится при некоторых k и c, где c < n.

потому что n! делится на n без остатка
3! + 1 = 2 * 3 + 1 = 2! * 3 + 1
4! + 1 = 6 * 4 + 1 = 3! * 4 + 1
5! + 1 = 24 * 5 + 1 = 4! * 5 + 1
Re[8]: Интересные задачки для программистов
От: Smal Россия  
Дата: 31.10.06 13:38
Оценка:
Здравствуйте, Максим Алексейкин, Вы писали:

Хм. Я еще раз перечитал первое сообщение и понял, что изначально неправильно понял про заполнение интервалов.
Теперь все стало ясно. Мои извинения, что так долго тормозил.
С уважением, Александр
Re[9]: Интересные задачки для программистов
От: Максим Алексейкин США  
Дата: 31.10.06 14:30
Оценка:

ваше решение в студию
Re[10]: Интересные задачки для программистов
От: Smal Россия  
Дата: 31.10.06 16:33
Оценка:
Здравствуйте, Максим Алексейкин, Вы писали:

МА>

МА>ваше решение в студию

Я основывался на аналогии с Диофантовыми уравнениями.
Пусть среди названых чисел будут два взаимно простых числа a и b.
(В случае, если все числа имеют некоторый общий делитель, задача сводится к исходной).
Так как НОД(a,b) = 1, то существуют M и N, такие что aM + bN = 1.
Одно из чисел M и N будет отрицательно. Пусть это будет M.
Тогда любое число из промежутка [-a^2M, -a^2M + a] представляется в виде
-a^2M + (aM + bN) * k = aM(k - a) + bN, k <= a.


Ну, а для следующих промежутков просто прибавляется a.
С уважением, Александр
Re[2]: Интересные задачки для программистов
От: rm822 Россия  
Дата: 10.11.06 16:24
Оценка:
G>>5b. Кусок замороженного спирта в бочке с пивом. Что станет с уровнем жидкости, когда спирт весь растает? (не понмню откуда)

К>Объём тающего спирта увеличивается, а объём охлаждаемой воды — уменьшается (до 4°С), затем снова увеличивается.

К>Объём водно-спиртовой смеси — меньше объёмов каждого из компонентов.
К>При растворении спирта выделяется тепло.
К>Бочка может быть термостабилизированной или термоизолированной. Колебания объёма могут быть изобарическими или сопровождаться колебаниями давления. При этом может затрачиваться разное количество энергии (одно дело пробулькать водяной затвор, другое — деформировать бочку, третье — сатурация или десатурация пива углекислым газом).

К>В общем, идёт довольно затейливый процесс, суммарный эффект варьируется и от количества веществ, и от начальной температуры, и от других условий.


Плавающий спирт порядочно торчит над пивом, а когда растает растечется равномерным слоем, т.е. уровень повыситься
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[3]: Интересные задачки для программистов
От: Кодт Россия  
Дата: 10.11.06 17:45
Оценка:
Здравствуйте, rm822, Вы писали:

R>Плавающий спирт порядочно торчит над пивом, а когда растает растечется равномерным слоем, т.е. уровень повыситься


Пиво охладится за счёт таяния спирта и сожмётся, т.е. уровень понизится.
Объём спирто-водяного раствора меньше, чем сумма объёмов жидкого спирта и воды (при той же температуре), т.е. уровень опять понизится.
При растворении жидкого спирта в воде выделяется тепло, пиво нагреется, т.е. уровень повысится.
Растворимость углекислого газа в спирто-водяных растворах разной концентрации и разной температуры тоже разная — если произойдёт десатурация, то снова объём понизится.

Скомпенсируют ли эти колебания исходное повышение уровня — это вопрос.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[3]: Интересные задачки для программистов
От: rm822 Россия  
Дата: 10.11.06 17:55
Оценка:
Здравствуйте, ArtemGorikov, Вы писали:

AG>Здравствуйте, ghost92, Вы писали:


G>>Здравствуйте, Grammer, Вы писали:


G>>>7. У вас есть 8 с виду одинаковых монет, одна из которых, тем не менее, фальшивая. Фальшивая монета чуть тяжелее, но во всем остальном идентична настоящим. У вас также есть, в лучших традициях жанра, весы с чашечками, как у богини правосудия. За какое минимальное число взвешиваний можно определить фальшивку? (популярная задача)

G>>2 достаточно. можно и с 9ю монетами справиться.

AG>2 недостаточно. 8->4->2. Итого 3 сравнения.


Более чем
1е взвешивание 3,3,2
2е взвешивание 1,1,1 или 1,1
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Интересные задачки для программистов
От: Аноним  
Дата: 16.11.06 07:43
Оценка:
Здравствуйте, seafresh, Вы писали:

S>Здравствуйте, Grammer, Вы писали:

G>>25. У вас есть зажигалка и веревка. Если веревку поджечь с конца, то она вся сгорит за полчаса. Как отмерить, при помощи этих двух предметов 15 минут? Важное обстоятельство: Веревка горит неравномерно, где-то быстрее, где-то медленнее. (очень популярная задача)

S>Поджечь с двух сторон, как только вся веревка сгорит пройдет 15 минут.


но веревка ведь горит не равномерно? разве ваше решение верно?
Re[3]: Интересные задачки для программистов
От: Максим Алексейкин США  
Дата: 16.11.06 09:42
Оценка:
Здравствуйте, Аноним, Вы писали:

S>>Поджечь с двух сторон, как только вся веревка сгорит пройдет 15 минут.


А>но веревка ведь горит не равномерно? разве ваше решение верно?


конечно верно, ведь суммарно вся она сгорит в 2 раза быстрее

             30
     15              15
+----------+------------------+
              это часть длиннее, но горит быстрее
Re[5]: Интересные задачки для программистов
От: ncoder  
Дата: 24.11.06 14:14
Оценка:
Здравствуйте, Arioch, Вы писали:

A>On Wed, 01 Feb 2006 19:46:41 +0300, vitaly_spb <19231@users.rsdn.ru> wrote:


>> А>Уменьшится. Все-таки плотность кирпича больше плотности воды, поэтому

>> будучи в лодке, он вытеснит больше воды, чем сам, пойдя ко дну.
>>
>> А почему так можно поподробнее?

A>A куда подробнее ?


A>Плавающий предмет вытесняет воду равную своему весу. Утонувший — равную

A>своему объему.

как понять эту фразу? сколько в итоге воды вытеснится массой?

A>Сравни сколько воды вытеснит плавающий и утонвший кирпич. Чем больше воды

A>вытеснено — тем выше уровень
A>--
A>Отправлено M2, революционной почтовой программой Opera:
A>http://www.opera.com/mail/
Re: Интересные задачки для программистов
От: phys  
Дата: 19.12.06 12:10
Оценка:
Здравствуйте, Grammer, Вы писали:

G>1. Даны 2 буфера фиксированной длины. В начале каждого лежат данные (строчки текст), дальне до конца нули. Поменять строчки местами и перевернуть их задом на перед, так, чтобы в итоге нули опять находились в конце, а текст — в начале. (Microsoft)



#include "stdafx.h"
#include <algorithm>



const int size = 50;
char first[size];
char second[size];

void showArray(char *pointer)
{
    for(int i = 0; i<size;++i)
    {
        if(*pointer == 0)
            std::cout<<(int)(*pointer ++);
        else
            std::cout<<(*pointer ++);
    }
    std::cout<<std::endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
    memset(first,  0, size);
    memset(second, 0, size);
    
    strcpy(first, "Hello");
    strcpy(second, "Obligatory");

    showArray(first);
    showArray(second);

    std::reverse(first, first+strlen(first));
    std::reverse(second, second+strlen(second));

    if (strlen(second)<strlen(first))
        std::swap_ranges(first, first+strlen(first), second);
    else
        std::swap_ranges(second, second+strlen(second), first);

    std::cout<<std::endl<<"After conversion :"<<std::endl;

    showArray(first);
    showArray(second);

    return 0;
}
Re[4]: Интересные задачки для программистов
От: and1  
Дата: 20.12.06 16:26
Оценка:
Здравствуйте, Влад, Вы писали:

В>Насколько помню из курса физики:

В>mg = Fapx <<=== ААААААААААААААААА
Fарх = pgh
p — ро (плопность вещества)!!!!!!!!!!!!!!!!!!!!!!!!
Re[2]: Интересные задачки для программистов
От: Crab Украина  
Дата: 05.01.07 12:30
Оценка: :)
Здравствуйте, seafresh, Вы писали:

G>>22. Стандартный способ "честного" деления пирога: первый участник делит, второй выбирает себе один из кусков, оставшийся кусок достается первому. Что делать если участников 3? (Мартин Гарднер, чтоли?)


S>1-ой делит на две части, 2-ой делит любой кусок на две части, 3 выбирает себе любой кусок от последнего деления, оставшийся забирает 2-ой.

S>2-ой делит на две части кусок от первого деления и т.д. после трех таких процедур у каждого будет по 2 куска.

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

I'm the hero I'm back
With weapons and with magic spells
Re[3]: Интересные задачки для программистов
От: Кодт Россия  
Дата: 05.01.07 19:30
Оценка: :)
Здравствуйте, Crab, Вы писали:

C>все это глупости. пихаем торт в мясорубку, и каждому выдаем по половине (трети, четверти, и т.д.) от того что получилось


Тот, кто облизывает мясорубку, получит преимущество.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[3]: Интересные задачки для программистов
От: lost_shadow Россия  
Дата: 09.01.07 12:44
Оценка:
Ну да, я бы сказал, что после первого хода любые N-1 ходов закроют всё на "бесконечности", то есть с числа, максимального из всех ранее названных и придётся двигаться назад.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.