12 / 1 / 0
Регистрация: 19.11.2014
Сообщений: 42
1

Определить является ли число k степенью 3

25.10.2015, 07:06. Показов 3362. Ответов 5
Метки нет (Все метки)

Определить является ли число k степенью 3. Помогите решить...
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2015, 07:06
Ответы с готовыми решениями:

Определить является ли число к степенью 3
Определить является ли число к степенью 3.

Определить, является ли число степенью двойки
Такая проблема: в проге мне нужно задать количество чисел которые я введу (т.е создать массив под...

Определить является ли число степенью тройки
Помогите , напишете код программы ( Определить является ли число степенью тройки )

Определить, является ли число Х степенью числа 2
Является ли число Х степенью числа 2(ЙЕС или НОУ)? Например числа 8,2,32- Являются, а 5,7,6-нет.

5
Модератор
Эксперт С++
12417 / 9989 / 6015
Регистрация: 18.12.2011
Сообщений: 26,731
25.10.2015, 07:14 2
Лучший ответ Сообщение было отмечено Nike91 как решение

Решение

C++
1
2
3
4
5
6
7
 int k=125;
    double a=pow((double)k,1./3.);
    int t=int(a+1e-8);
    if(t*t*t==k)
        cout<<"Yes!\n";
    else
        cout<<"No.\n";
Ну, или так:
C++
1
2
3
4
5
6
7
8
9
int k=125,t=1;
    for(;t<=k;t++)
        if(t*t*t==k)
        {
            cout<<"Yes!\n";
            break;
        }
    if(t==k && k!=1)
        cout<<"No.\n";
1
12 / 1 / 0
Регистрация: 19.11.2014
Сообщений: 42
25.10.2015, 07:26  [ТС] 3
А как сделать, чтобы число вводилось с клавиатуры?

Добавлено через 6 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
using namespace std;
int main()
{ setlocale (LC_ALL, "russian"); 
   int k;
   cout << "Введите k=";
   cin >> k;
    double a=pow((double)k,1./3.);
    int t=int(a+1e-8);
    if(t*t*t==k)
        cout<<"Да\n";
    else
        cout<<"Нет\n";
    system ("pause");
    return 0;
}
А как объяснить 9 и 10 строку?
0
Модератор
Эксперт С++
12417 / 9989 / 6015
Регистрация: 18.12.2011
Сообщений: 26,731
25.10.2015, 07:38 4
C++
1
2
    double a=pow((double)k,1./3.);// извлекаем корень кубический из действительного числа
    int t=int(a+1e-8);// чтобы учесть приближенность действительных чисел чуть-чуть его увеличим
1
306 / 101 / 18
Регистрация: 04.07.2014
Сообщений: 571
25.10.2015, 09:04 5
Что-то не понятно... Вы ищете представление в виде куба, а речь идёт о степени тройки https://www.cyberforum.ru/cgi-bin/latex.cgi?3^n=k.

Я бы сделал что-то такое, но, по-возможности, следует оптимизировать.
C++
1
2
3
4
5
6
unsigned int base = 3;
unsigned int k      = 243;
while (p < k)
    p *= base;
 
std::cout << (p == k ? "YES" : "NO") << std::endl;
0
Диссидент
Эксперт C
26953 / 16834 / 3699
Регистрация: 24.12.2010
Сообщений: 37,778
25.10.2015, 12:09 6
C++
1
2
3
4
5
6
7
8
bool Is3Pow(unsigned int k)
{
   while( k > 1) {
      if (k%3) return false;
      k /= 3;
   }
    return true;
}
Добавлено через 4 минуты
Легко обобщается на степень любого числа
C++
1
2
3
4
5
6
7
8
9
bool IsMPow(unsigned int k, unsigned int m)
{
   if (m==1) return (k==m);
   while( k > 1) {
      if (k%m) return false;
      k /= m;
   }
    return true;
}
Добавлено через 2 минуты
Для полноты картины следует добавить проверку на 0

Добавлено через 3 минуты
mporro, Ваш код похож на мой, но "с другой стороны"
Маленькое замечание. Переменная p не инициализирована. Надо p = 1;

Добавлено через 5 минут
Еще замечание. Мой код "возьмет" больше чисел. Имеется в виду числа, близкие к максимально представимому. Так как я не увеличиваю числа. А у вас p может вылезти за разрядную сетку и там будут происходить очень смешные вещи. Вплоть до зацикливания программы.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.10.2015, 12:09
Помогаю со студенческими работами здесь

Определить, является ли число степенью двойки
По заданному положительному числу n &lt; 2^64 определить, является ли оно степенью двойки. Решение...

Определить является ли число степенью двойки
Стоит задача Ввести число. Определить является ли оно степенью 2 (число 16 является, а 22 нет)

Определить, является ли данное число степенью двойки
Является ли данное число степенью двойки? Формат входных данных Вводится число. Формат выходных...

Определить, является ли число целой степенью двойки
Задано целое положительное число.Определить, является ли оно целой степенью двойки. Вход 1 16...


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

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

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