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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2009, 21:43   #1
Mangust
Пользователь
 
Регистрация: 18.06.2008
Сообщений: 11
Восклицание Задача про треугольник Паскаля.

Народ помогите срочно решить задачу 3.03.2009 уже сдавать надо.

В общем есть треугольник Паскаля, в каждой строке a нечётных чисел. Строки нумеруются с 0. Определить кол-во нечётных чисел в строке № b. Я видел решение в несколько строк без процедур, но забыл. Там было while, в условии цикла and между числами (не логическими выражениями!!), этот цикл считал какое-то число, а ответ выводился "2 shl <это число>".

Помогите плиз, а то срочно надо. Номер строки до 2 000 000 000, чтобы работало быстро просто летало.
Mangust вне форума Ответить с цитированием
Старый 02.03.2009, 00:26   #2
Тупой
Форумчанин
 
Аватар для Тупой
 
Регистрация: 26.12.2008
Сообщений: 146
По умолчанию

Вопрос на засыпку:
Вы знаете сколько вообще ВСЕГО чисел в строчке треугольника Паскаля под номером 2 000 000 000?
ПС: если скажете, то обещаю написать на C/C++/C#/VB/Pascal/Delphi/... до 3-го марта.
"Hello, world!" - 17 errors 56 warnings
Тупой вне форума Ответить с цитированием
Старый 02.03.2009, 09:59   #3
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

интересная задача (люблю такие).
Код:
var n,k,i:longint;
begin
  readln(n);
  k:=0;
  repeat
    if n mod 2=1 then k:=k+1;
    n:=n div 2;
  until n=0;
  n:=1;
  for i:=1 to k do n:=n shl 1;
  writeln(n);
end.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 02.03.2009, 19:44   #4
Тупой
Форумчанин
 
Аватар для Тупой
 
Регистрация: 26.12.2008
Сообщений: 146
По умолчанию

Plague, ну а при номере строчки = 2 000 000 000 работает?
"Hello, world!" - 17 errors 56 warnings
Тупой вне форума Ответить с цитированием
Старый 02.03.2009, 20:02   #5
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

не работает только уже начиная от 2147483647
это граница типа longint
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 02.03.2009, 20:16   #6
Тупой
Форумчанин
 
Аватар для Тупой
 
Регистрация: 26.12.2008
Сообщений: 146
По умолчанию

А вот мне кажется, что колличество нечетных чисел можно вычислить с помощью простой формулы. Только вот надо подумать, какой...
"Hello, world!" - 17 errors 56 warnings
Тупой вне форума Ответить с цитированием
Старый 02.03.2009, 20:35   #7
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

Ну никто вам не мешает. Думайте...
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Старый 02.03.2009, 21:29   #8
Mangust
Пользователь
 
Регистрация: 18.06.2008
Сообщений: 11
По умолчанию

Спасибо огромное Plague - прога работает очень помогло.
Mangust вне форума Ответить с цитированием
Старый 02.03.2009, 23:48   #9
Тупой
Форумчанин
 
Аватар для Тупой
 
Регистрация: 26.12.2008
Сообщений: 146
По умолчанию

(все мое ИМХО, хотите верьте, хотите нет)
Можно сделать немного более простую и быструю функцию, если учитывать тот факт что:
В треугольнике Паскаля
Рассмотрим множество строк от строчки под номером 2^n до строчки под номером 2^(n+1). (давайте считать, что n - "велико")
Число этих строк = 2^n
Так как n велико, то давайте разделим 2^n на четверки (этих четверок будет 2^(n-2))
Теперь я попробую объяснить индуктивно то, до чего додумался:
давайте абстрагируемся от всяких строчек, а просто попробуем составить последовательности:

Например - самое порстое: Пусть дана последовательность
1:{2,4,4,8}
Следующую будем строить предыдущую, умноженную на 2:
2:{2,4,4,8}, {4,8,8,16} - Она уже состоит из 2-х четверок
3: Третья должна состоять из 4-х четверок, которые получаются из предыдущей последовательности следующим образом:
к предыдущей последовательности дописывается сначало все кроме первой четверки, а последняя четверка на равна предпоследней, умноженной на 2(оч непонятно, но по другому никак)
{2,4,4,8}, {4,8,8,16},{4,8,8,16},{8,16,16,32}
4:{2,4,4,8}, {4,8,8,16},{4,8,8,16},{8,16,16,32}, {4,8,8,16},{4,8,8,16},{8,16,16,32}, {16,32,32,64}
...
Для i-й писать влом.
А теперь, я утверждаю, что для номера строчки из треугольника Паскаля = 2^n, числа нечетных чисел в строках с номерами от 2^n до 2^(n+1) записываются как вышеизложенная мною строчка с номером n-1

Завтра могу написать прогу. Преимущество в том, что она сама "строит" треугольник и считает в нем в нечетные числа.

Может я где то ошибся, если что, исправьте.
"Hello, world!" - 17 errors 56 warnings

Последний раз редактировалось Тупой; 02.03.2009 в 23:57. Причина: исправил ошибку
Тупой вне форума Ответить с цитированием
Старый 02.03.2009, 23:59   #10
Plague
Забанен
Форумчанин Подтвердите свой е-майл
 
Аватар для Plague
 
Регистрация: 01.11.2006
Сообщений: 420
По умолчанию

проверил программу на числе9223372036854775807
верхняя граница Int64 решается за сотую долю секунды.

Суть не в том чтобы построить треугольник он нам не нужен,
просто есть закономерность по которой можно найти количество нечетных чисел в строке треугольника Паскаля.
Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана
Plague вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Треугольник задан длинами своих сторон: a, b, c. Найти углы треугольника. задача на С++ Wia Помощь студентам 6 13.12.2008 16:13
Найти площадь треугольник (задача в делфи) YO$YA Помощь студентам 5 19.11.2008 21:29
Задача про треугольник YO$YA Помощь студентам 10 15.11.2008 20:29
Треугольник Паскаля в Turbo Pascale 7.0 Rusl92 Паскаль, Turbo Pascal, PascalABC.NET 12 23.04.2008 13:56
ПОМОГИТЕ С ПРОГРАММОЙ ПРО ТРЕУГОЛЬНИК LOTER Помощь студентам 26 30.01.2008 03:36