"Лучше поздно чем никогда" (c) Егор.
Сегодня, 8 декабря, состоялся очередной СРМ.
№ | Пользователь | Рейтинг |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
Страны | Города | Организации | Всё → |
№ | Пользователь | Вклад |
---|---|---|
1 | cry | 167 |
2 | Um_nik | 163 |
3 | maomao90 | 162 |
3 | atcoder_official | 162 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 156 |
8 | TheScrasse | 154 |
9 | Dominater069 | 153 |
9 | nor | 153 |
Название |
---|
P.S. под chrome ссылка не хотелось вставляться ни какими методами(
Пусть g = gcd(N, M). Ответом будет g*(N/g-1)/2.
Что это значит: сокращаем отрезок [0, N-1] в g раз. Тогда каждый элемент получившегося отрезка будет входить в сумму w(i). Считаем сумму элементов этого отрезка - числа от 0 до N/g-1: s = N/g*(N/g-1)/2. Домножаем на g, чтобы получить реальные значения из первоначального отрезка, и берем среднее. получается как раз g*(N/g-1)/2.
Надеюсь, понятно объяснил)
рассмотрим последовательность ai = (i * N)modM.
Взяв i = N * M / D получаем что a0 = ai = 0, а значит последовательность имеет данный период (можно доказать что он минимален). При этом значения ai должны делиться на D, поскольку они являются линейной комбинацией N и M. Используя расширенный алгоритм Евклида можно доказать что последовательность пробегает ВСЕ числа меньшие M и делящиеся на D, то есть 0, D, 2D, ... M - D. Среднее у этих чисел - (M - D) / 2, вот и ответ.
550ка немного хмурная.
Если понять условие она простая. Но сначала надо понять условие и нигде не скосячить (что я успешно провалил, неверно посортив слова).
ans = abs( N - gcd( N, M ) ) / 2.00 ???
Waiting time of starship is a divisor of D, because it is always linear combination of N and M.
Assume waiting time of i-th starship is ai.
ai + 1 = ( - i * M)modN, a0 = aN = 0, , so the sequence is linear and has a period. The answer is an average value of one period of the sequence.
D = x * N + y * M for some x, y (extended euclidian algorithm ), so ay = N - D, hence every k * D , 0 < = k * D < N is found in the sequence.
The answer is average of k * D where 0 < = k * D < N which is (N - D) / 2.0
Or Is there any other approach to this question?
check this link & its 2nd page!