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

Сколько цифр в числе степени двойки? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Обработка массивов http://www.cyberforum.ru/cpp-beginners/thread617782.html
помогите пожалуйста разобраться с кодом(прокомментировать), или помогите написать код ,но проще) сложно разобраться в некоментированной программе!!! Обработка массивов Задание: Дана строка символов. Признак конца строки – символ ‘\n’ (перевод строки). Строка состоит из слов, разделенных пробелами. Вывести слова, заканчивающиеся слогом ‘qw’, и длину каждого из этих слов. Исходный код: ...
C++ Составить алгоритм и программу длля поиска в массиве целых чисел из 5 элементов минимального числа. Составить алгоритм и программу длля поиска в массиве целых чисел из 5 элементов минимального числа. http://www.cyberforum.ru/cpp-beginners/thread617775.html
C++ Вычислить вектор a={A1,A2...An}, если А1=0,5 Аm=M аm-1+m!
Вычислить вектор a={A1,A2...An}, если А1=0,5 Аm=M аm-1+m!
Вычислить количество чисел, квадрат которых меньше 10 C++
Вычеслить количество чисел, квадрат которых меньше 10
C++ Ввести массив из 10 элементов, найти произведение элементов массива. http://www.cyberforum.ru/cpp-beginners/thread617770.html
Ввести массив из 10 элементов, найти произведение элементов массива.
C++ На плоскости задано множество прямых. Найти количество пересечений этих прямых На плоскости задано множество прямых. Найти количество пересечений этих прямых плиз помогиите с решением!! подробнее

Показать сообщение отдельно
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
02.07.2012, 14:38     Сколько цифр в числе степени двойки?
переписал из программы перевода чисел, мож пригодится. дает точный ответ, но пригодна лишь для n < 1000
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
#include <vector>
using namespace std;
 
int func(int n)
{
    vector<int> a(n+1);
    a.front() = 1;
    int q = 2, p = 10, res = 0, s = n+1;
 
    do
    {
        int j = 0;
        int demolition = 0; 
 
        for (int i = 0; i != s; ++i)
        {       
            demolition *= q;        
            demolition += a[i];
 
            if (demolition < p && i && j) 
            {
                a[j] = 0; 
                ++j;
            }
 
            if (demolition >= p) 
            {   
                a[j] = demolition / p;  
                demolition %= p;   
                ++j;
            }
        } 
 
        s = j;
        ++res;
    }
    while(s);
 
    return res; 
}
 
int main(void)
{
    size_t n;
    cin >> n;
    cout << func(n);
    return 0;
}
 
Текущее время: 16:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru