LINUX.ORG.RU
ФорумTalks

Математическая задача, последовательность для тех, кто все забыл

 ,


0

1

Привет ЛОРчик! Есть задачка.

Женщина везла корзину яиц на рынок. 
Навстречу ехал мужик и разбил корзину с яйцами.

- Сколько у тебя было яиц в корзине? Я оплачу ущерб.

- Не знаю. Но когда я их перекладывала 
по 2шт., по 3шт., по 4шт., по 5 шт., по 6 шт, 
всегда оставалось 1 лишнее яичко. 
И только когда я перекладывала их по 7 шт., 
лишних яиц не оставалось.

Сколько было яиц в корзине?

Сама задачка – так себе конечно. И понятно, что чисел может быть здесь не одно, а целая последовательность. Первое число находится даже в уме, ну максимум с калькулятором если уж совсем тяжело. До второго наверное тоже можно дойти самому. А вот дальше все-таки интереснее поделиться своей болью с число-дробилками. Они тут поддержат и поймут. Код здесь тривиален, можно даже не смотреть, уверен, каждый напишет свой лучше моего в сто, а то и в 1024 раза лучше. Итак, все-таки код:


#include <iostream>

using std::cout;
using std::endl;

class eggs {
  public:
    unsigned int get_eggs() {
       unsigned int x = 7;
       unsigned int m = 2;
       while (x < 100000) {
          int a = 0;
          for (int i = 2; i <= 6; i++) 
              if (x % i == 1) a++;

          if (a == 5) {
             cout << "eggs: " << x << endl;
             //return x;
          }
          x = m * 7;
          m++;
       }

       return 0;
    }

};

int main () {
   eggs egg;
   egg.get_eggs();

   return EXIT_SUCCESS;
}



Этот код дает вот такую последовательность, первые несколько чисел:

eggs: 301
eggs: 721
eggs: 1141
eggs: 1561
eggs: 1981

Так вот, на мой взгляд, самое интересное в этой задаче – это как раз таки последовательность. Короче, я не берусь ничего утверждать, но заметили, числа идут с шагом 420? Почему? По логике в задаче, число 301 будет повторяться под разными предлогами в ответе – это понятно. Понятно также, что оно не может повториться открыто 2, 3, 4.. 6 раз – это было бы слишком явная маскировка. Как ему пробраться в бабушкин сервант за конфетами ночью по скрипучим деревянным половицам?

Итак, число 301 – первое в нашей последовательности. Остальные идут с шагом 420. Предположим 420 – это маскировка для 301, которое очень хочет влезть в корзину еще раз. Тогда 420 – можно представить как 301 + 119. А 119 – это 17х7. Где 7 я еще могу понять как один из делителей нацело из задачи. Но почему 17???

Хотя, мой бред можно не слушать, лучше предложите свой вариант.

★★★★★

420 это наименьший общий делитель для чисел 1..7.

300 - общий делитель для чисел 1..6, но не наименьший (наименьший - 60), а первый где 60*n+1 будет делиться на 7.

Сама задачка – так себе конечно. И понятно, что чисел может быть здесь не одно, а целая последовательность

А вот тут ты не совсем прав.

301, конечно, ответ. 721, может быть, тоже. А вот следующее число уже вряд ли - корзина получается весит больше 100кг, её будет затруднительно везти, физику тоже надо учитывать.

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 5)
Ответ на: комментарий от firkax

А вот следующее число уже вряд ли - корзина получается весит больше 100кг, её будет затруднительно везти, физику тоже надо учитывать.

Ну, она «везла» на рынок. Могла везти на барже :)

Bfgeshka ★★★★★
()
Ответ на: комментарий от Bfgeshka

Ну, она «везла» на рынок. Могла везти на барже :)

Мужик ехал ей на встречу, а не плыл или шел. :)

anc ★★★★★
()

В задаче не сказано, что за яйца. Перепелиные весит от 9 до 18 грамм. Сильная самостоятельная женщина вполне может расширить диапазон решений. Тут больше ограничений в объёме и форме корзины.

imul ★★★★★
()

Верно рассуждаешь, но не до конца.

Еще раз.

Первое подходящее число 301.

Дальше логично, что если взять еще одно 301, то как бы должен получится такой же результат, но не получается. Остатки сложаться, и будет {0,2,2,2,2,0}. И вот тут нам на помочь приходит 119. Его волшебство в том, что оно дает такие остатки: {1,2,3,4,5,0}. И теперь, если мы возмем 301+301+119 и сложим их остатки от деления получим {1,4,5,6,7,0}, потом опять «довыкладываем из корзины» [0,3,4,5,6,0] и получаем искомые остатки {1,1,1,1,1,0}.

yax123 ★★★★★
()

Чисто математически тут диофантово уравнение.

яйца = 60n + 1 && 60n + 1 = 7m

n = 7t + 5 => яйца = 420t + 301

moonmadness
()
Ответ на: комментарий от firkax

Маленькая поправка по терминологии: 420 это наименьшее общее кратное НОК, а не НОД.

iliyap ★★★★★
()

Не бох весть, но вот тебе моё решение а одну строчку на APL:

      2 3 4 5 6 {((⍴⍺)=+⌿1=(⍺∘.|⍵))/⍵} 7×⍳1000
301 721 1141 1561 1981 2401 2821 3241 3661 4081 4501 4921 5341 5761 6181 6601

В принципе это тоже сито Эратосфена, которое убирает не только делители на 2, но на 3, 4, 5, 6 и производные.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 2)
Ответ на: комментарий от beastie

Разбор полёта, если кому интересно, на более простом примере: яиц было 7n а также 2k+1 и 3m+1.

Множители 7-и:

      7×⍳10
7 14 21 28 35 42 49 56 63 70

Остаток от деления на 2 и 3 в виде матрицы:

      2 3 ∘.| 7×⍳10
1 0 1 0 1 0 1 0 1 0
1 2 0 1 2 0 1 2 0 1

Нас интересуют только те, где остаток от деления по условию 1:

      1=2 3 ∘.| 7×⍳10
1 0 1 0 1 0 1 0 1 0
1 0 0 1 0 0 1 0 0 1

Сумируем колонки:

      +⌿1=2 3 ∘.| 7×⍳10
2 0 1 1 1 0 2 0 1 1

Выбираем те, где сумма 2 (1+1: остаток от деления на 2 + остаток от деления на 3):

      2=+⌿1=2 3 ∘.| 7×⍳10
1 0 0 0 0 0 1 0 0 0

Делаем выборку из исходного вектора:

      (2=+⌿1=2 3 ∘.| 7×⍳10) / 7×⍳10
7 49
beastie ★★★★★
()

мой бред можно не слушать, лучше предложите свой

У китайской теоремы об остатках вроде есть обобщение и на такой случай.

ratvier ★★
()

420? Почему?

Нам нужен такой минимальный ненулевой (иначе скучно) x, чтобы выполнялось следующая система:

301 + x ≡ 1 (mod 2)
301 + x ≡ 1 (mod 3)
...
301 + x ≡ 1 (mod 6)
301 + x ≡ 0 (mod 7)

То есть x не должен влиять на остаток от деления на 2, 3, 4, 5, 6 и 7.

Минимальный такой x, не равный нулю, будет 2²×3×5×7 = 420.

ad0c
()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)