Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/34: Рейтинг темы: голосов - 34, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 19.03.2011
Сообщений: 6
1

Максимальная степень двойки

17.09.2011, 22:29. Показов 6554. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
"F(a, b) = x - 1, где x - максимальная степень двойки, на которую делится нацело a-b, если a ≠ b и F(a, b) = -1, если a = b."
Это как так возможно? Например: a=5, b=2; следовательно a-b=3; число 2^n (при любом n от 1 до бесконечности) никогда не делится на 3.

C++
1
2
3
4
5
6
7
8
9
10
11
int a,b,x,f;
a=5; b=2;
x=1;
 
if(a!=b) {
    while(x%(a-b)!=0){
        x*=2;
    }
    f=x-1;
}
else f=-1;
при a=5; b=2; после длительного умножения на 2, x становится равной 0.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.09.2011, 22:29
Ответы с готовыми решениями:

Вычислить 10-ю степень двойки сложением, умножением и просто возведением в степень.
Написать код на С++ или С# или на Java Вычислить 10-ю степень двойки 1 - сложением, умножением и...

степень двойки
Вводится число. Напечатать YES, если оно является степенью двойки, NO - иначе. int a,b=1; ...

Степень двойки
Изучаю программирование. Попытался решить известную задачу. Программа компилируется, но если ввести...

Точная степень двойки
Написал прогу. Как сделать, чтобы при вводе числа не являющейся точной степенью двойки, прога не...

6
138 / 138 / 42
Регистрация: 02.11.2010
Сообщений: 316
17.09.2011, 22:53 2
из задания я понял, что надо делить не на результат возведения в степень, а на саму степень. Т.е. при a=5, b=2 максимальная степень 2-ки НА которую делится 3 - это 3.
0
0 / 0 / 0
Регистрация: 19.03.2011
Сообщений: 6
17.09.2011, 23:20  [ТС] 3
Что-то я не понял Приведите пожалуйста примеры: при a-b=4, a-b=8, a-b=9, a-b=17 и т.д. (любой a и b)
0
138 / 138 / 42
Регистрация: 02.11.2010
Сообщений: 316
17.09.2011, 23:39 4
a-b=4 степень - 4. a-b=8 степень 8. и так далее. я так понял по заданию что a - b это и есть степень
0
Заблокирован
18.09.2011, 00:43 5
Цитата Сообщение от Mc_1 Посмотреть сообщение
"F(a, b) = x - 1, где x - максимальная степень двойки, на которую делится нацело a-b
в случае a - b = 3, максимальная степень двойки равна 0, поскольку 2^0 = 1, а 3 / 1 = 3. так понятно?
тебе надо написать функцию, которая возвращает степень двойки, в зависимости от аргументов
C++
1
2
3
4
int f_1(int a, int b){
      ................
}
int f_2 (int a, int b){ return -1;}
Добавлено через 31 минуту
не, ошибся немного. ну принцип уловил, надо вернуть максимальную степень двойки - 1. т.е. минимальное число, возвращаемой функцией в любом случае не будет меньше 0.
1
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
18.09.2011, 11:10 6
Работайте с битами памяти, так намного удобнее и полезнее:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int Max_deg(int a, int b)
{
   int c = a - b, i = 0;
   if (c == 0)
      return -1;
   while ((c & 1) == 0)
   {
       i++;
       c >>= 1;
   }
   return i;
}
 
int main()
{
   printf("%d\n", Max_deg(5, 2));
   getchar();
   return 0;
}
Добавлено через 2 минуты
Цитата Сообщение от Mc_1 Посмотреть сообщение
при a=5; b=2; после длительного умножения на 2, x становится равной 0.
Так и должно быть, ибо НОД(3, 2^n)=1=2^0
1
0 / 0 / 0
Регистрация: 19.03.2011
Сообщений: 6
18.09.2011, 20:48  [ТС] 7
Спасибо большое всем за помощь!
0
18.09.2011, 20:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.09.2011, 20:48
Помогаю со студенческими работами здесь

Найти степень двойки
Дано целое число N>0, являющееся некоторой степенью числа 2:N=2 ^k. Найти целое число К -...

Точная степень двойки
Само задание: Дано натуральное число N. Выведите слово YES, если число N является точной степенью...

Степень двойки и остаток от деления
Цель: Возведите 2 в 75 степень, выведите остаток от деления полученного числа на 8^4-3 Входные...

Модульное деление на степень двойки
Раньше я всегда использовал примерной такой подход : int mod = 8; int a = 90412488; char b =...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru