Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.63
SeryZone
56 / 28 / 5
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
#1

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

02.07.2012, 13:22. Просмотров 2665. Ответов 21
Метки нет (Все метки)

Написать программу, сколько чисел будет в n-ной степени двойки.
Например:
В 22 будет 1 знак.
В 216 - 5 знаков.
Вводится число n, а выводится вычисленное количество знаков. Число n влазит в тип int.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.07.2012, 13:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сколько цифр в числе степени двойки? (C++):

Определить сколько цифр в заданном числе, найти сумму цифр, и последнюю цифру - C++
дано натуральное число n (n<10000). определить сколько цифр, найти сумму цифр, и последнюю цифру. Не могу сообразить где косяк вышел ...

Определить сколько цифр в заданном натуральном числе, и чему равна сумма его цифр - C++
Дано натуральное число n (n<=100). Определить сколько цифр в числе n, чему равна сумма его цифр.

Дано натурально число n. Сколько цифр в этом числе. Чему равняется сумма цифр. Найти первую цифру - C++
Желательно в С

Определить, сколько цифр в числе n - C++
Дано натуральное число n (n<=100). Определить: 1) сколько цифр в числе n; 2) чему равна сумма его цифр.

Сколько процентов от цифр в числе больше 5-и - C++
Дано натуральное число n. Сколько процентов от чисел в этом числе больше, чем 5? Пример: n=2012, ответ = 0% n=199, ответ = 67%

Сколько цифр в числе и чему равна их сумма? - C++
дано натуральное число n(n<=100) a) Сколько цифр в числе n? б) Чему равно сумма его чисел? в) Найти последнюю цифру г) первую...

21
sandye51
программист С++
685 / 587 / 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;
}
0
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;
}
0
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
02.07.2012, 13:38 #4
Sky-WaLkeR, если исправить синтаксические ошибки, то код работает правильно
а проверять можно тут http://liveworkspace.org/code/96dcc62d527809231fc78d1cd84d7b50
1
Sky-WaLkeR
1 / 1 / 0
Регистрация: 15.06.2012
Сообщений: 59
02.07.2012, 13:42 #5
Да, ошибочки есть Просто только что писал на другом языке, там синтаксис другой, вот и отвык. Вроде все исправил.
За ссылку спасибо.
0
SeryZone
56 / 28 / 5
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
02.07.2012, 13:48  [ТС] #6
Вы точно правильно написали to_string? У меня не работает. А функции я очень плохо знаю
0
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
02.07.2012, 13:49 #7
точно правильно, просто нужен компилятор с поддержкой нового стандарта
0
SeryZone
56 / 28 / 5
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
02.07.2012, 13:52  [ТС] #8
Фигня. Я ввёл 64, а оно выдало 0 вместо 19! А я имел ввиду вообще чтобы вычисляло до 200000000 и выше. Я просто работаю с длинными числами и мне нужно знать количество знаков например В 128-битном числе, и выше.
0
sandye51
программист С++
685 / 587 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
02.07.2012, 13:59 #9
128 битное число нельзя представить каким-либо стандартным типом
пишите длинную арифметику
0
diagon
Higher
1930 / 1196 / 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;
}
0
SeryZone
56 / 28 / 5
Регистрация: 09.03.2012
Сообщений: 726
Записей в блоге: 1
02.07.2012, 14:02  [ТС] #11
Да вот точный алгоритм:
1 - log(2) (заметьте - не ln, а log!);
2 - отбрасываем остаток.
3 - прибавляем еденицу!
Кто реализует функцию log?

Добавлено через 30 секунд
А, спасибо, уже реализовано!
0
sandye51
программист С++
685 / 587 / 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;
}
0
Catstail
Модератор
22830 / 11196 / 1812
Регистрация: 12.02.2012
Сообщений: 18,438
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)
1
Кот Ангенс
318 / 268 / 38
Регистрация: 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);
}
0
Catstail
Модератор
22830 / 11196 / 1812
Регистрация: 12.02.2012
Сообщений: 18,438
02.07.2012, 14:16 #15
Это что?
0
02.07.2012, 14:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.07.2012, 14:16
Привет! Вот еще темы с ответами:

Подсчитать, сколько десятичных цифр содержится в числе - C++
Задача 6.*(1-6.cpp, 16.dsp) Подсчитать, сколько десятичных цифр содержится в числе, которое ввел пользователь. Использовать оператор while.

Вывести сколько и каких цифр в каждом числе - C++
Есть массив из трех чисел , нужно вывести сколько и каких цифр в каждом числе. Программа работает только для первого числа , дальше счетчик...

Определить, сколько цифр в целом положительном числе - C++
нужно сделать на С. -Задано целое додатне число N. Определить, сколько в нем цифр.

Степень двойки в степени десятки - C++
Допустим, есть большое число типа double или extended. Дана степень десятки: 1Е+228. 1Е+228=2760. Вот задача: Сколько степеней двойки в...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru