Форум программистов, компьютерный форум CyberForum.ru

30000 тысяч курьеров - C++

Восстановить пароль Регистрация
 
qwer1234
12 / 12 / 3
Регистрация: 30.10.2012
Сообщений: 463
07.11.2013, 01:56     30000 тысяч курьеров #1
Ивана пригласили управлять департаментом. У первый день ему прислали 1000 курьеров, а в каждый следующий - день в 2 раза больше чем в предыдущий. Иван согласился тогда, когда к нему прибыло сразу 30000 курьеров. На какой день согласился?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.11.2013, 01:56     30000 тысяч курьеров
Посмотрите здесь:

вывести на экран товар, если цена за его единицу товара 10 тысяч и он лежит больше месяца C++
VBA Распознать числа, записанные как "30000 руб., 30 т.р., 30 тыс руб, 30000 рублей, 30 тыс.руб"
задание на 5 тысяч, или, оно же, на 10 тысяч. сделайте выбор
написать программу на с++ которая находит максимальное целое число, куб которого не превышает 30000 C++
C++ Выведите информацию о городах, где количество жителей больше пятидесяти тысяч
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
WebMacTep
 Аватар для WebMacTep
21 / 21 / 1
Регистрация: 03.10.2013
Сообщений: 128
07.11.2013, 13:05     30000 тысяч курьеров #2
qwer1234, выходит дело, что на 6 день согласился.

Вот код программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main ()
{
    int b = 0;
    int i;
 
    for (i = 1; b < 30000; i++)
    {
        b = 1000 * pow(2, i - 1);
        cout << i << ' ' << b << endl;
    }
 
    return 0;
}
Результат выполнения:

1 1000
2 2000
3 4000
4 8000
5 16000
6 32000


P.S.: Поправьте, если неправ.
qwer1234
12 / 12 / 3
Регистрация: 30.10.2012
Сообщений: 463
07.11.2013, 14:27  [ТС]     30000 тысяч курьеров #3
WebMacTep, большое спасибо)))
Jazz411
85 / 33 / 3
Регистрация: 12.03.2011
Сообщений: 234
Записей в блоге: 2
07.11.2013, 14:54     30000 тысяч курьеров #4
pow 2-ки? ололо))) ну да ладно) вместо pow делай сдвиг 2 << (i - 1);
Сдвиг делается быстрей чем возведение в степень
salam
157 / 138 / 11
Регистрация: 10.07.2012
Сообщений: 709
07.11.2013, 17:25     30000 тысяч курьеров #5
математика совсем не в тренде...
WebMacTep
 Аватар для WebMacTep
21 / 21 / 1
Регистрация: 03.10.2013
Сообщений: 128
07.11.2013, 23:16     30000 тысяч курьеров #6
Jazz411, можете про сдвиг пояснить?
Jazz411
85 / 33 / 3
Регистрация: 12.03.2011
Сообщений: 234
Записей в блоге: 2
08.11.2013, 01:39     30000 тысяч курьеров #7
WebMacTep, думаю лучше меня это сделает википедия, могу лишь добавить что сдвиг на 1 бит соответствует умножению или делению (в зависимости от направления) на 2

Добавлено через 1 минуту
salam, а что же тогда в тренде?
WebMacTep
 Аватар для WebMacTep
21 / 21 / 1
Регистрация: 03.10.2013
Сообщений: 128
08.11.2013, 17:57     30000 тысяч курьеров #8
Jazz411, спасибо. Разобрался. Оказывается, сдвиги – полезная вещь!
Yami
 Аватар для Yami
3 / 1 / 0
Регистрация: 02.11.2013
Сообщений: 21
08.11.2013, 19:06     30000 тысяч курьеров #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    int    day = 2 + log(30)/log(2);
 
    cout << day << endl;
 
    return 0;
}
Jazz411
85 / 33 / 3
Регистрация: 12.03.2011
Сообщений: 234
Записей в блоге: 2
08.11.2013, 19:33     30000 тысяч курьеров #10
WebMacTep, рад был помочь

Добавлено через 2 минуты
salam,

Не по теме:

вот отличный премер от Yami, по применению математики

WebMacTep
 Аватар для WebMacTep
21 / 21 / 1
Регистрация: 03.10.2013
Сообщений: 128
08.11.2013, 19:48     30000 тысяч курьеров #11
Yami, это как так?! Вы не поясните?
Yami
 Аватар для Yami
3 / 1 / 0
Регистрация: 02.11.2013
Сообщений: 21
08.11.2013, 20:29     30000 тысяч курьеров #12
Немного неправильно сделал
C++
1
2
int day = 1 + ceil( log(30)/log(2) );   // 1 + округление в большую сторону
cout << day << endl;
Цитата Сообщение от WebMacTep Посмотреть сообщение
Yami, это как так?! Вы не поясните?
Это геометрическая прогрессия. Первый член = 1000, знаменатель = 2. А последнее число можно посчитать вот так

http://www.cyberforum.ru/cgi-bin/latex.cgi?b1<br />
b2 = b1*q<br />
b3 = b2*q = b1*{q}^{2}<br />
...<br />
bn = b1*{q}^{n-1}

http://www.cyberforum.ru/cgi-bin/latex.cgi?30000 \leq 1000*{2}^{n-1}
http://www.cyberforum.ru/cgi-bin/latex.cgi?30 \leq {2}^{n-1}

Здесь уже определяем чему равно n (n - количество дней)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.11.2013, 23:26     30000 тысяч курьеров
Еще ссылки по теме:

C++ Рекурсивная функция (вычислить, через сколько лет долг бизнесмена превысит s тысяч рублей)
C++ Locale - не верное отображение символа - разделителя тысяч для чисел
PC в пределах 30000-37000 тысяч

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

Или воспользуйтесь поиском по форуму:
WebMacTep
 Аватар для WebMacTep
21 / 21 / 1
Регистрация: 03.10.2013
Сообщений: 128
08.11.2013, 23:26     30000 тысяч курьеров #13
Yami, точно! Спасибо!
Yandex
Объявления
08.11.2013, 23:26     30000 тысяч курьеров
Ответ Создать тему
Опции темы

Текущее время: 09:29. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru