var
idx, n, m: integer;
begin
readln(n);
for idx := 0 to n do
begin
if idx=0 then m := 1 else
m:=trunc(ln(idx)/ln(2))+integer((ln(idx)/ln(2)) >= trunc(ln(idx)/ln(2)));
writeln(idx, ' - ', m);
end;
readln;
end.
Выводит искомые значения в диапазоне [0..N]. Программу легко модифицировать для вывода единственного значения.
---
Уважайте время других участников Ответов. Не забывайте отмечать лучшие ответы.
Другие языки программирования и технологии
Помогите пожалуйста!Паскаль. Дано натуральное число N. Получить наименьшее число вида 2(m в степени), превосходящее N.
R := 1; M := 1;
while R <= N do
begin
Inc(M);
R := R shl 1;
end;
WriteLn('2^', M, ' = ', R, ' > ', N);
while R <= N do
begin
Inc(M);
R := R shl 1;
end;
WriteLn('2^', M, ' = ', R, ' > ', N);
Ужосы какие! Логарифмы, огругления! А вы знаете, сколько тактов требует расчет логарифма и нафиг оно нужно для этой задачи? Не проще ли просто аккумулятор забить в единицу и в цикле множить на 2 до тех пор, пока не станет больше чем N?
Всего-то будет максимум 32 раза, что скорее всего - будет быстрее, чем считать логарифм.. . Если вместо умножения использовать битовый сдвиг влево - то будет еще быстрее.. .
А на самом деле эту задачу можно сделать вообще быстро: убить младшие значащие биты в числе (оставив только старший) , после чего, сдвинуть все на разряд влево.. . Хуший случай дасть 32 итерации, но зато лучший - всего одну...
Всего-то будет максимум 32 раза, что скорее всего - будет быстрее, чем считать логарифм.. . Если вместо умножения использовать битовый сдвиг влево - то будет еще быстрее.. .
А на самом деле эту задачу можно сделать вообще быстро: убить младшие значащие биты в числе (оставив только старший) , после чего, сдвинуть все на разряд влево.. . Хуший случай дасть 32 итерации, но зато лучший - всего одну...
Пиши на почту, договоримся.
Или в асю - 447890533
Или в асю - 447890533
Похожие вопросы
- как решить через abc pascal задачу "Дано натуральное число n. Получить все простые делители этого числа"
- Помогите написать программу Дано натуральное число n. Вычислить сумму всех k(k+1), k меняется от 1 до n.
- Паскаль. Представить натуральное число n в виде суммы трёх квадратов натуральных чисел.
- Дано натуральное число n и вещественная матрица размера n X 9 . Плиз помогите(
- дано натуральное число N. Определить является ли оно полиндромом. Паскаль
- Паскаль. Дано натуральное число. Верно ли , что цифра А встречается в нем более К раз.
- паскаль - Дано натуральное число п. Переставить его цифры так, чтобы образовалось наименьшее число
- Дано натуральное число n. Найти и вывести все числа в интервале от 1 до n -1, у которых произведение всех цифр совпадает
- В некоторой стране используются денежные купюры достоинством в 1, 2, 4, 8, 16, 32 и 64. дано натуральное число N. Как на
- Помогите с Pascal. Дано натуральное число. Определите сумму m его последних цифр отличных от 0