Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.11.2016, 21:44   #1
Muukaramiskarhu
Новичок
Джуниор
 
Регистрация: 23.11.2016
Сообщений: 3
По умолчанию [Pascal] Дано натуральное k от 1 до 500. Написать программу для определения цифры, которая находится в k-той позиции последовательности. 110100100010000100000...

Дано натуральное k от 1 до 500. Написать программу для определения цифры, которая находится в k-той позиции последовательности. 110100100010000100000...

Формат входных данных:
Файл содержит число k - позиция искомой цифры.

Формат выходных данных.
Выходной файл содержит искомую цифру.
Muukaramiskarhu вне форума Ответить с цитированием
Старый 23.11.2016, 21:59   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

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

Код:
{ (с) Arcor }

var i, j, k: Integer;
begin
  repeat
     ReadLn(k); // ввод проверяемой переменной
  until (k>0) and (k<=500);
 
  i := 0;
  j := 1;
 
  while j <= k do
    begin
      i := i + 1;
      j := j + i;
    end;
 
  if j - i = k then
    Writeln('1')
  else
    Writeln('0');
  Readln;
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.11.2016, 22:05   #3
Muukaramiskarhu
Новичок
Джуниор
 
Регистрация: 23.11.2016
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
позволю себе опубликовать чужое решение, найденное поиском через гугл
Спасибо. Действительно, как я до этого не догадался. Спасибо еще передайте автору . Закройте тему что-ли :*
Muukaramiskarhu вне форума Ответить с цитированием
Старый 23.11.2016, 22:07   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Цитата:
Сообщение от Muukaramiskarhu Посмотреть сообщение
позиции последовательности. 110100100010000100000...
Что за последовательность?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 23.11.2016, 22:11   #5
Muukaramiskarhu
Новичок
Джуниор
 
Регистрация: 23.11.2016
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Что за последовательность?
Мне кажется, что это последовательность, записанная в строку без пробела.
Muukaramiskarhu вне форума Ответить с цитированием
Старый 23.11.2016, 22:30   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Что за последовательность?
степени числа 10 записанные в одну строчку без пробелов:
10^0 10^1 10^2 10^3 10^4 10^5 и т.д. до бесконечности.
-> 1 10 100 1000 10000 100000 -> 110100100010000100000


Цитата:
Сообщение от Muukaramiskarhu Посмотреть сообщение
Спасибо.
Пожалуйста. Найти чужое решение не трудно


Цитата:
Сообщение от Muukaramiskarhu Посмотреть сообщение
Закройте тему что-ли :*
А смысл в этом какой? Пожалуй, не стоит закрывать.
Без крайней необходимости темы на данном форуме не закрываются.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.11.2016, 22:50   #7
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Для "особо одаренных" можете расписать смысл алгоритма?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 23.11.2016, 23:00   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
Для "особо одаренных" можете расписать смысл алгоритма?
переменная i - (счётчик по сути) - это длина очередной степени десятки (сначала длина 1, потом длина 2, потом длина 3 и т.д.
а j - накапливает длину строки последовательности - она вычисляется - к предыдущей длине строки добавляем очередную длину степени десятки.
крутим цикл, пока длина строки с последовательностью j не станет больше и равной заданному числу k
дальше вычисляем, куда наша цифра k попала - на начало очередной степени (j - i)=k - и тогда это циферка "1"
в противном случае это "0"

вот и всё.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 23.11.2016, 23:00   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно и без цикла магической формулой
Код:
  i:=Trunc(Sqrt(8*k-7));
  if i*i=8*k-7 then Writeln('1') else Writeln('0');
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 23.11.2016 в 23:05.
Аватар вне форума Ответить с цитированием
Старый 23.11.2016, 23:13   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Можно и без цикла магической формулой
Красиво!!
А разоблачение магии будет?
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите, пожалуйста! Дано натуральное число N. Требуется написать программу для определения наименьшего (!) из больших чисел, составленных из тех же цифр. Kat2605krug Паскаль, Turbo Pascal, PascalABC.NET 1 18.10.2016 10:24
Написать программу, которая вводит две символьных последовательности Mixasnt Помощь студентам 1 27.10.2012 13:06
Дано натуральное число п. Написать программу для определения первой цифры числа п. AlenaVasilenko Паскаль, Turbo Pascal, PascalABC.NET 5 17.06.2011 18:23
Дано 2 слова. Написать программу, которая будет определять присутствует ли слово 1 в слове 2. Паскалька^^ Помощь студентам 5 19.10.2010 00:55
цифра, которая находится в k-той позиции последовательности C-Jay Помощь студентам 4 09.11.2008 10:48