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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.63
SeryZone
 Аватар для SeryZone
56 / 28 / 5
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
02.07.2012, 13:22     Сколько цифр в числе степени двойки? #1
Написать программу, сколько чисел будет в n-ной степени двойки.
Например:
В 22 будет 1 знак.
В 216 - 5 знаков.
Вводится число n, а выводится вычисленное количество знаков. Число n влазит в тип int.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
02.07.2012, 13:27     Сколько цифр в числе степени двойки? #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <cstdlib>
#include <cmath>
#include <iostream>
#include <string>
 
int main()
{
    unsigned int n;
    
    std::cout << "Etner n: " << std::endl;
    std::cin >> n;
    
    std::cout << "Answer: " << std::to_string(static_cast<unsigned int>(pow(2., static_cast<double>(n)))).length() << std::endl;
    
    system("Pause");
    return EXIT_SUCCESS;
}
Sky-WaLkeR
1 / 1 / 0
Регистрация: 15.06.2012
Сообщений: 59
02.07.2012, 13:35     Сколько цифр в числе степени двойки? #3
Попробуй, должно работать но проверить не на чем.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
int getCount(int a){
    int i = 0;
    while(a>0) { a /= 10; ++i;}
    return i;
}
 
int main(void){
    cout << "Enter N: 2^";
    short n; int num=1;
    cin >> n;
    for(short i=0; i<n; i++){ num*=2; }
    cout << "\nNumber: " << num << "\nResult: " << getCount(num);
    return 0;
}
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
02.07.2012, 13:38     Сколько цифр в числе степени двойки? #4
Sky-WaLkeR, если исправить синтаксические ошибки, то код работает правильно
а проверять можно тут http://liveworkspace.org/code/96dcc6...c78d1cd84d7b50
Sky-WaLkeR
1 / 1 / 0
Регистрация: 15.06.2012
Сообщений: 59
02.07.2012, 13:42     Сколько цифр в числе степени двойки? #5
Да, ошибочки есть Просто только что писал на другом языке, там синтаксис другой, вот и отвык. Вроде все исправил.
За ссылку спасибо.
SeryZone
 Аватар для SeryZone
56 / 28 / 5
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
02.07.2012, 13:48  [ТС]     Сколько цифр в числе степени двойки? #6
Вы точно правильно написали to_string? У меня не работает. А функции я очень плохо знаю
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
02.07.2012, 13:49     Сколько цифр в числе степени двойки? #7
точно правильно, просто нужен компилятор с поддержкой нового стандарта
SeryZone
 Аватар для SeryZone
56 / 28 / 5
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
02.07.2012, 13:52  [ТС]     Сколько цифр в числе степени двойки? #8
Фигня. Я ввёл 64, а оно выдало 0 вместо 19! А я имел ввиду вообще чтобы вычисляло до 200000000 и выше. Я просто работаю с длинными числами и мне нужно знать количество знаков например В 128-битном числе, и выше.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
02.07.2012, 13:59     Сколько цифр в числе степени двойки? #9
128 битное число нельзя представить каким-либо стандартным типом
пишите длинную арифметику
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.07.2012, 13:59     Сколько цифр в числе степени двойки? #10
На больших числах будет неточно работать, ибо числа вещественные.
C++
1
2
3
4
5
6
7
8
9
#include <iostream>
#include <cmath>
 
int main()
{
    int n;
    std::cin >> n;
    std::cout << static_cast< int > (n * std::log10(2.0) + 1) << std::endl;
}
SeryZone
 Аватар для SeryZone
56 / 28 / 5
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
02.07.2012, 14:02  [ТС]     Сколько цифр в числе степени двойки? #11
Да вот точный алгоритм:
1 - log(2) (заметьте - не ln, а log!);
2 - отбрасываем остаток.
3 - прибавляем еденицу!
Кто реализует функцию log?

Добавлено через 30 секунд
А, спасибо, уже реализовано!
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
02.07.2012, 14:04     Сколько цифр в числе степени двойки? #12
хотя можно и таким способом
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
#include <cmath>
 
unsigned long long int value(unsigned long long int n)
{
    return static_cast<unsigned long long int>(floor(log10(2) * n));
}
 
int main()
{
    unsigned long long int n;
    std::cout << "Enter a degree" << std::endl;
    std::cin >> n;
    
    std::cout << "Result: " << value(n) << std::endl;
    
    system("Pause");
    return EXIT_SUCCESS;
}
Catstail
Модератор
 Аватар для Catstail
21451 / 10236 / 1667
Регистрация: 12.02.2012
Сообщений: 17,110
02.07.2012, 14:05     Сколько цифр в числе степени двойки? #13
Дарю идею: к-во цифр в степенях двойки с нуля и далее идут так: 1,1,1,1,2,2,2,3,3,3,4,4,4,4,5,5,5,6,6,6,
- т.е. повторяются группы (4 одинаковой длины и 2 по 3 одинаковой длины). Правильно рассчитав, можно верно вычислить к-во цифр у степени двойки практически в любой степени.

Ну, а с точностью до одного знака это совсем легко по формуле (int) n*log10(2)
Кот Ангенс
 Аватар для Кот Ангенс
317 / 267 / 37
Регистрация: 24.05.2012
Сообщений: 629
02.07.2012, 14:09     Сколько цифр в числе степени двойки? #14
C
1
2
3
4
5
6
7
8
9
10
#include <stdio.h>
 
int main() {
    char i = 1;
    int n;
    scanf("%d", &n);
    while (n /= 10)
        i++;
    printf("%d", i);
}
Catstail
Модератор
 Аватар для Catstail
21451 / 10236 / 1667
Регистрация: 12.02.2012
Сообщений: 17,110
02.07.2012, 14:16     Сколько цифр в числе степени двойки? #15
Это что?
Кот Ангенс
 Аватар для Кот Ангенс
317 / 267 / 37
Регистрация: 24.05.2012
Сообщений: 629
02.07.2012, 14:17     Сколько цифр в числе степени двойки? #16
Это был бред. После scanf нужно добавить строку:
C
1
n = 1 << n;
Catstail
Модератор
 Аватар для Catstail
21451 / 10236 / 1667
Регистрация: 12.02.2012
Сообщений: 17,110
02.07.2012, 14:31     Сколько цифр в числе степени двойки? #17
Вот. Проверяйте. Обошлись без логарифмов...

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
#include "iostream.h"
 
int SizePow2(int n)
{
    int S=1,k=0,m=4,i,c; 
 
    for (i=0; i <= n; i++)
    {
         k++;
                         
         if ((k % m) == 0) 
         {
                
             k = 0;
 
             if (i != n) S++;
             
             if (m == 4) 
             {
                m = 3;
                c = 0;
             } 
             else
             {
                c++;
                if (c == 2) m=4;
             }
         }
    }
         
    return S;
 
}
 
 
int main(int argc, char* argv[])
{
    int n;
     
    cin >> n;
 
    cout << SizePow2(n) << endl;
 
    return 0;
}
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
02.07.2012, 14:35     Сколько цифр в числе степени двойки? #18
Цитата Сообщение от Catstail Посмотреть сообщение
Вот. Проверяйте. Обошлись без логарифмов...
Неправильно же.
Проверил для n == 100500, выдало 30151(а правильно - 30254).
softmob
1248 / 698 / 155
Регистрация: 20.02.2010
Сообщений: 1,035
02.07.2012, 14:38     Сколько цифр в числе степени двойки? #19
переписал из программы перевода чисел, мож пригодится. дает точный ответ, но пригодна лишь для 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;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2012, 14:46     Сколько цифр в числе степени двойки?
Еще ссылки по теме:

C++ Вывести сколько и каких цифр в каждом числе
Найти число максимальное близкое к степени двойки C++
C++ Подсчитать, сколько десятичных цифр содержится в числе

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

Или воспользуйтесь поиском по форуму:
Catstail
Модератор
 Аватар для Catstail
21451 / 10236 / 1667
Регистрация: 12.02.2012
Сообщений: 17,110
02.07.2012, 14:46     Сколько цифр в числе степени двойки? #20
diagon-у. Беру тайм-аут, буду проверять...
Yandex
Объявления
02.07.2012, 14:46     Сколько цифр в числе степени двойки?
Ответ Создать тему
Опции темы

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