Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
1

Как убить негра(аналог легенды о Иосифе Флавии)

16.04.2011, 15:38. Показов 1830. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нашел в инэте следующую задачку:

Т.к. мне лень считать вручную, решил написать программу по этой задаче...
В вики нашел следующую формулу:

Вроде как написал под нее код, но он выводит неверное значение и в double(по другому логарифм не считается).
C++
1
2
3
4
5
6
7
8
#include <iostream>
#include <math.h>
main(){
    int n,m;
    std::cin >> n >> m;
    std::cout <<  m*(n-pow(2,log((double)n)))+1;
    return 0;
}
Подробнее о задаче здесь:http://ru.wikipedia.org/wiki/%... 0%B8%D1%8F
Миниатюры
Как убить негра(аналог легенды о Иосифе Флавии)  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.04.2011, 15:38
Ответы с готовыми решениями:

Легенда о Иосифе Флавии
Существует легенда, что Иосиф Флавий - известный историк первого века - выжил и стал известным...

Сессию нужно убить memberid нужно принудительно убить и страницы... как ?
&lt;SCRIPT LANGUAGE=VBScript RUNAT=Server&gt; SUB Session_OnStart Session.Timeout = 3 ...

как убить?
Нужно убить железа! Но как это сделать подскажите... Смерть должна выгядить естественным. Железо...

Как убить процесс?
Как убить процесс (скайпа) на C#?

6
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
16.04.2011, 16:02  [ТС] 2
Есть, конечно, и другие способы, но хочется именно формулу.
Насколько я понимаю, неправильно вычисляется именно логарифм, возможно log() в качестве основания берет не 2?
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
16.04.2011, 16:23 3
diagon, нет, разумеется, не 2. Это натуральный логарифм.
1
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
16.04.2011, 16:35  [ТС] 4
Странно... Заменил log на log2(должен такой быть в math.h), билдер такой функции не знает....
Попробовал также cmath.h, ничего не изменилось
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
16.04.2011, 16:38 5
Если не ошибаюсь, это функция стандарта С99 (могу и ошибаться).
В любом случае, двоичный логарифм через натуральный получается так:
C++
1
double log2a = log(a) / log(2);
1
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
16.04.2011, 17:15  [ТС] 6
Что-то эта формула совсем мой мозг съела..
Точно знаю, что при n=10 и m=3 k будет равно 4.
Если подставить, то получится 3*(10-3^4)+1=-212...
Перепробовал все варианты, подставляя вместо m 2 и оставляя ее константой... 4, как ни крути, не выходит.
upd:эта формула, оказывается, выражена из этой
http://upload.wikimedia.org/ma... d6950b.png

Добавлено через 7 минут
Все, разобрался.
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
16.04.2011, 17:15 7
diagon, во-перывх, [n] - целая часть n, никаких округлений, поэтому в степени будет 3, а не 4 (это без учёта второго пункта ). Во-вторых, в формуле m фигурирует не только на месте множителя и основания степени, но так же и в основании логарифма. Т.е. должно быть 3 * (10 - 3 ^ [log3(10)]) + 1, что и будет равняться 4.
1
16.04.2011, 17:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.04.2011, 17:15
Помогаю со студенческими работами здесь

Как убить любовь?
Иногда такое в жизни случается...... досадное чувство под названием любовь. Вот живешь ты...

Как убить поток???
Добрый день всем! Подскажите пожалуйста, как убить поток, не дожидаясь окончания выполнения...

Как убить видюху?
как убить видюху

Как убить Android?
Подскажите пожалуйста, есть ли какой то способ сделать так что бы телефон не загружал андроид(типа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru