24 июн. 2009 г.

Продолжаем заниматься математикой

Надо преподавать математику так, чтобы ученики могли применять знания в обычной жизни. А то отличник, отвечая на вопрос ЕГЭ о количестве банок краски, купленных для покраски, пишет в бланке 2,56. Как в мультике про полтора землекопа.

В школьном курсе много лишнего (это можно изучить в институте). Например, логарифмы. Хорошо, что не объясняют, как вычислять с помощью логарифмической линейки. Если на уроке программирования я захочу поставить двойку, то попрошу составить простенькую программу для вычисления LOG(9) по основанию 7.

Итак, вторая половина теста. Несколько комментаторов нашли число 30 и написали, что это было легко. Можно было составить программу, например, такую:

program z1;
var a,n:integer;
begin
a:=2; n:=0;
while a>1 do
begin
a:=(a*2) mod 99;
n:=n+1;
end;
writeln(n+1);
end.

Теперь самое трудное. Надо доказать, что 2^30 - 1 делится на 99 ровно, без остатка. Вычислять, сколько будет 2 в тридцатой степени запрещено. Первому доказавшему — постовой в следующем посте.

14 комментариев:

  1. Ну хрен знает. Тоже программа какая-то существует?

    ОтветитьУдалить
  2. Я наверное извращенец, то я перевел 2^30-1 и 99 в двоичку, потом поделил в столбик... Что заняло 5 минут...
    В принципе как способ доказать точечное решение - нормально :-) Других вариантов пока не нашел.

    ОтветитьУдалить
  3. На самом деле забавно - автор говорит, что надо преподавать математику "для жизни" и дает такой пример, который в принципе и в научной практике и в программистской не встретится в принципе :-)

    Хотя как разминка мозгов - супер. Спасиб.

    ОтветитьУдалить
  4. А у меня программа не работает. я ее на паскалике набрал и ошибку выдает :)

    ОтветитьУдалить
  5. Анонимный24.06.2009, 17:24

    А у меня работает и на 999 выдает 36.

    ОтветитьУдалить
  6. Анатолий24.06.2009, 18:10

    Кошак, откуда такая категоричность? Неужели мне в голову этот алгоритм пришёл случайно, а не в связи с практической задачей?

    ОтветитьУдалить
  7. Анатолий24.06.2009, 18:12

    Да, действительно 2^36 - 1 делится на 999.

    ОтветитьУдалить
  8. Игорёк24.06.2009, 18:29

    Вклинюсь.. А какая практическая задача?

    ОтветитьУдалить
  9. Анатолий24.06.2009, 18:42

    http://www.mathforum.ru/forum/read/3/13550/

    ОтветитьУдалить
  10. Анонимный24.06.2009, 21:47

    Я доказал.

    ОтветитьУдалить
  11. С цифрой 99 достаточно просто, можно предствить как
    99 = 3x(2^5+1)

    С 2^30-1 посложнее будет. Используя нехитрую школьную математику (кто ж ее правда помнит %) и формулы "суммы кубов" и "суммы квадратов" представим число вот так:

    2^30-1 = (2^5+1)(2^5-1)(2^20 + 2^10 + 1)
    = (2^5-1)(2^5+1)((4^10-1) + (4^5-1) + 3)

    по "основной теореме алгебры" (4^10-1) тоже раскладывается в что-то такого вида
    (4^10-1)=(4-1)(многочлен) = 3(многочлен)

    Имеем:

    (2^30-1) / 99 =
    = 3*(2^5+1)*(2^5-1)*((многочлен1) + (многочлен2) + 1) / (3*(2^5+1))

    Примерно так :)

    ОтветитьУдалить
  12. Постоянно проблемы с Паскалём имела, никогда не могла понят его.

    ОтветитьУдалить
  13. Анатолий27.06.2009, 14:03

    Причём тут Паскаль?

    ОтветитьУдалить
  14. Анатолий27.06.2009, 14:14

    Приведу своё доказательство, что 2^30 - 1 делится на 99. Только я буду опираться на то, что мы делали в первой половине теста.
    1,2,4,8,16,32,64,29,58...
    1/99 = 0,(01)0101...
    2/99 = 0,(02)0202...
    ....................
    128/99 = 1,(29)2929...
    и т.д.
    1/99*(2^30) = X,(01)0101...
    1/99*(2^30) = X + 1/99
    (2^30 - 1)/99 = X

    ОтветитьУдалить