a^n = (a^k)^n/k
a^64 = (a^7)^64/7 => выражение а в седьмой степени в степени девять целых и одна седьмая
n = n / k; // где k - количество множителей, количество операций меньше на одну
// то есть
a^64 = (a * a * a * a * a * a * a)^64/7
Другие языки программирования и технологии
подскажите алгоритм решения задачи: Действительное число а. Использовать только умножение. Получить а^64 за 6 операций.
Алгоритм такой:
до операций) А - это начальное значение а
1 операция) A = A*A − это будет а^2
2 операция) A = A*A − это будет а^4 = а^2 * а^2 = a^(2+2)
3 операция) A = A*A − это будет а^8 = а^4 * а^4 = a^(4+4)
4 операция) A = A*A − это будет а^16 = а^8 * а^8 = a^(8+8)
5 операция) A = A*A − это будет а^32 = а^16 * а^16 = a^(16+16)
6 операция) A = A*A − это будет а^64 = а^32 * а^32 = a^(32+32)
В результате в А будет значение начального А в 64 степени!
до операций) А - это начальное значение а
1 операция) A = A*A − это будет а^2
2 операция) A = A*A − это будет а^4 = а^2 * а^2 = a^(2+2)
3 операция) A = A*A − это будет а^8 = а^4 * а^4 = a^(4+4)
4 операция) A = A*A − это будет а^16 = а^8 * а^8 = a^(8+8)
5 операция) A = A*A − это будет а^32 = а^16 * а^16 = a^(16+16)
6 операция) A = A*A − это будет а^64 = а^32 * а^32 = a^(32+32)
В результате в А будет значение начального А в 64 степени!
можно и покороче
#include <iostream>
using namespace std;
void main()
{
double a=2;
cout << (a*=a*=a*=a*=a*=a*=a) << endl;
}
только для встроенных типов может не хватить разрядов для отображения точного результата
#include <iostream>
using namespace std;
void main()
{
double a=2;
cout << (a*=a*=a*=a*=a*=a*=a) << endl;
}
только для встроенных типов может не хватить разрядов для отображения точного результата
Мы поможем, а какие у вас соображения? Кроме условия задачи?
int a;
a*=a; //a^2
a*=a; //a^4
a*=a; //a^8
a*=a; //a^16
a*=a; //a^32
a*=a; //a^64
6 итераций - 6 умножений.
a*=a; //a^2
a*=a; //a^4
a*=a; //a^8
a*=a; //a^16
a*=a; //a^32
a*=a; //a^64
6 итераций - 6 умножений.
Похожие вопросы
- Помогите составить алгоритм решения задачи
- подскажите алгоритм решения 386 задачи на acmp.ru http://www.acmp.ru/index.asp?main=task&id_task=386
- Можете подсказать алгоритм для решение задачи?
- Помогите!!! с помощью вектора написать кодДаны действительные числа a1...,a30 Получить; а) max (a1+a30,a2+a29,...a15+a16
- Как в C++ разбить число на цифры и вывести их через пробел? Решение задачи реализовать с помощью конструкции switch.
- Создание алгоритма для решения задачи на Ассемблере!
- Помогите найти алгоритм подбора множителей к числам заданного массива, сумма произведений которых равна заданному числу
- Lazarus. Даны действительные числа a1,a2,.,a2n . Получить: a1,a2n,a2,a2n-1,a3,.,an,an+1
- Недавно начал изучать программирование (не с полного нуля), но мои решения задач слишком громоздкое, это нормально?
- Каков алгоритм решения данной задачи, где копать?