Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Определить цифру на n - ой позиции послед - ти 
V
    Опции темы
ioManip
  Дата 27.10.2012, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 12.8.2011
Где: Благовещенск

Репутация: нет
Всего: нет



Задача
 Дано n - целое. Последовательность сост. из степеней 10 - ки (110100100010000....).
 Определить какая цифра находиться на n позиции последовательности.

Вообщем не прошу исходного кода(  на Ваше усмотрение  ), прошу помочь найти закономерность(алгоритм).

Из того, что я увидел:
1. Можно через строки, но ведь должен быть другой способ!?
2. Нашел зависимость, связанную с ариф. прогрессией, т.е. 1 - ы  стоят на 0,1,3,6 позициях, но не пойму как реализовать...

--------------------
Мечты не работают, пока ты не работаешь! 
PM MAIL Skype   Вверх
feodorv
Дата 27.10.2012, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(ioManip @  27.10.2012,  10:16 Найти цитируемый пост)
найти закономерность

Код

1 - 0нулей - 1 - 1ноль - 1 - 2нуля - 1 - 3 нуля - 1 - 4нуля...



--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
Ln78
Дата 27.10.2012, 10:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: нет
Всего: 15



Цитата(ioManip @  27.10.2012,  09:16 Найти цитируемый пост)
стоят на 0,1,3,6 позициях

Сумма членов арифметической прогрессии, в данном случае: k*(k+1)/2.
Выяснить, представляется ли заданное n в таком виде. Возможны, например, такие варианты:
1. Просто в цикле увеличиваем переменную k, рассчитываем k*(k+1)/2 и сравниваем с n. Если равно - единица, если меньше - продолжаем цикл, если больше - заканчиваем цикл, считаем, что там нуль.
2. Цикл заменить расчётом квадратного корня из 2*n, взять целую часть от этого корня, т.е. k = int(sqrt(2.0*n)). Если k*(k+1) = 2*n - единица, иначе - нуль.
PM MAIL   Вверх
ioManip
Дата 27.10.2012, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 12.8.2011
Где: Благовещенск

Репутация: нет
Всего: нет



feodorv, Спасибо!
Ln78, Спасибо smile . Скажите, а как Вы пришли в этой формуле? k*(k+1)/2.  smile 
--------------------
Мечты не работают, пока ты не работаешь! 
PM MAIL Skype   Вверх
Dem_max
Дата 27.10.2012, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1780
Регистрация: 12.4.2007

Репутация: 4
Всего: 39



Это тема должна находиться в разделе Алгоритмы.


--------------------
Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte")
PM MAIL   Вверх
Ln78
Дата 27.10.2012, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 25.11.2006

Репутация: нет
Всего: 15



Цитата(ioManip @  27.10.2012,  10:46 Найти цитируемый пост)
Скажите, а как Вы пришли в этой формуле?

ioManip, лет 30 назад учился в школе. Там мне рассказали про эту форурмулу те, кто пришёл к ней ещё раньше.  smile 
PM MAIL   Вверх
feodorv
Дата 27.10.2012, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(ioManip @  27.10.2012,  11:46 Найти цитируемый пост)
Скажите, а как Вы пришли в этой формуле? k*(k+1)/2.

Как рассуждал Гаусс-школьник: напишем ряд чисел от 1 до N в строчку, а под ним ещё один - от N до 1, число под числом:
Код

1       2    3    ....       98    99   100
100   99   98                3      2     1

Нетрудно заметить, что сумма двух чисел в столбце - всегда N+1, столбцов - N, поэтому сумма чисел в двух рядах - N*(N+1), а в одном ряду  - N*(N+1)/2 (поскольку ряды совпадают, только записаны в противоположных порядках)...

Это сообщение отредактировал(а) feodorv - 27.10.2012, 11:39


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
ioManip
Дата 27.10.2012, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 162
Регистрация: 12.8.2011
Где: Благовещенск

Репутация: нет
Всего: нет



feodorv,  Спасибо!  smile   smile  smile

Добавлено через 12 минут и 33 секунды
Ребята smile Последний вопрос! 2 - ой алгоритм предложенный Ln78, почему именно корень из 2 * n?
--------------------
Мечты не работают, пока ты не работаешь! 
PM MAIL Skype   Вверх
feodorv
Дата 27.10.2012, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011

Репутация: 12
Всего: 45



Цитата(ioManip @  27.10.2012,  12:47 Найти цитируемый пост)
почему именно корень из 2 * n? 

Цитата(Ln78 @  27.10.2012,  11:06 Найти цитируемый пост)
Если k*(k+1) = 2*n - единица, иначе - нуль. 

Поэтому k ~= sqrt(2*n) smile 


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1186 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.