Другие языки программирования и технологии

подскажите алгоритм решения задачи: Действительное число а. Использовать только умножение. Получить а^64 за 6 операций.

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
СП
Сергей Проценко
79 741
Лучший ответ
Алгоритм такой:
до операций) А - это начальное значение а
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 степени!
Lex Alexis
Lex Alexis
62 238
можно и покороче
#include <iostream>
using namespace std;
void main()
{
double a=2;
cout << (a*=a*=a*=a*=a*=a*=a) << endl;
}
только для встроенных типов может не хватить разрядов для отображения точного результата
Мы поможем, а какие у вас соображения? Кроме условия задачи?
ТА
Туре Асемов
2 407
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 умножений.