juan_gandhi: (Default)
[personal profile] juan_gandhi
Интервьюировал тут интересного француза, из-под Гренобля - Еколь Политекник, потом Бёркли. Мой первый вопрос - хрен ли тут у нас на посёлке делать после прекрасных предгорий? А тут типа у нас жизнь (а там типа нету). Молодёжь!

Короче, задал ему недавно тут пролетавшую задачу - сумму максимальных нечётных делителей для чисел от 1 до N. Сначала написал джавный код, который, будь у нас tail recursion (у него второй язык CAML), был бы ничо бы.

Я его попросил пооптимизировать. Нарисовал алгоритм, пропорциональный N. Я предложил поискать алгоритм, пропорциональный логарифму N. И тут он нарисовал чудесную вещь.

Он нарисовал график, где по горизонтальной оси N, а по вертикальной - значения, которые он складывает (ну понятное дело, логарифмы складывает). По горизонтали N столбиков. Или, по вертикали, log2(N) полосок. После чего решил взять, да интегрировать не по x, а по y. Так что сумм у нас будет всего log2(N), а значения, что суммируются - ну не биг дил посчитать.

Ребята, я такой фокус первый раз вижу! Наглядно донельзя: на графике.

Остаток интервью допрашивал его про метод Годунова - так, чтоб языком почесать.

Ну дай бог он к нам согласится.

Date: 2010-02-09 07:37 pm (UTC)
From: [identity profile] lanceupper.livejournal.com
:) Если вы возьмете последовательность чисел "делящиеся на 4 с остатком 2" и разделите их на 2, то вы получите последовательность чисел делящихся на 2 с остатком 1, т.е. просто напросто последовательность нечетных чисел: 1, 3, 5, 7... :) Объяснять это через нагромождение "все делящиеся на 4 с остатком 2, деля их на 2" - это все равно что ехать из Москвы с Санкт-Петербург через Владивосток.

На самом деле если выписать последовательность наших слагаемых на бумажке, то видно, что это просто напросто набор последовательностей 1, 3, 5, 7... вложенных друг в друга совершенно очевидным образом. Если вычеркнуть "самую верхнею" подпоследовательность 1, 3, 5, 7... (т.е. через одну), то оставшаяся подпоследовательность будет иметь тот же самый вид. Фрактал, понимаш :)

А решение из этого - очевидно. Берем сумму 1, 3, 5, 7... до N (арифметическая прогрессия), прибавляем сумму 1, 3, 5, 7... до N/2, затем до N/4 и т.д. до победного конца.

Date: 2010-02-10 12:18 am (UTC)
From: [identity profile] buddha239.livejournal.com
А ведь не так и трудно просуммировать 1+3+5+7...!:)

Date: 2010-02-10 12:29 am (UTC)
From: [identity profile] lanceupper.livejournal.com
А явно суммировать ничего и не надо. Формулу суммы N первых членов арифметической прогрессии проходят в школе.

Profile

juan_gandhi: (Default)
Juan-Carlos Gandhi

May 2025

S M T W T F S
    1 2 3
456 7 8 9 10
11 121314151617
181920 21 222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 25th, 2025 08:13 am
Powered by Dreamwidth Studios