Форум программистов, компьютерный форум CyberForum.ru

Как работает алгоритм возведения числа a в степень n ? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Дается последовательность. Найдите максимальное произведение среди всех пар этих чисел http://www.cyberforum.ru/cpp-beginners/thread789114.html
Е. Дается последовательность из N чисел. Найдите максимальное произведение среди всех пар этих чисел. Первая строка входного файла содержит целое число N. В следующей строке вводится N целых чисел по модулю меньше 1000. E.in 3 1 2 3 E.out 6 (comment 2*3=6) E.in 4
C++ Заданы две строки. Можно ли переставить буквы в одном из слов так, чтобы слова стали одинаковыми? F. Заданы две строки А и В. Можно ли переставить буквы в одном из слов так, чтобы слова стали одинаковыми? Выведите "Yes", если можно переставить буквы в одном из слов, чтобы слова стали одинаковыми или "No" иначе. F.in bca cba F.out Yes F.in ada dada F.out No http://www.cyberforum.ru/cpp-beginners/thread789113.html
C++ с чего начать новичку С++ без опыта работы?
Такая проблема. Есть человек, прочитал 2 книжки по языку С++. Программистом конечно не назовёшь, но так, кодер нормальный. Как развиваться дальше? Можно конечно прочитать ещё книгу по С++ и ещё, и ещё, ... Но там по сути одно и то же читать будешь. Нужно что-то другое. Так ведь и на работу не устроиться (это самая главная беда). В вакансиях программистов С++ указано, что надо иметь опыт работы...
Задано целое число N. Найдите сумму простых чисел до N C++
С. Задано целое число N. Найдите сумму простых чисел до N. 1<=N<=1000 C.in 5 C.out 10 comment (2+3+5=10)
C++ Дается строка. Нужно вывести все цифры, которые встречаются в ней и их количество http://www.cyberforum.ru/cpp-beginners/thread789102.html
B. Дается строка S. Нужно вывести все цифры, которые встречаются в ней и их количество. 1<=|S|<=1000 B.in 90109914 B.out 0 2 1 2 4 1 9 3
C++ составить программу с исп. рекурсии и без нее Вычислить √(1+√(2+√(3+ √n )) ) Написать написано, а вот рекурсия работает не так #include<iostream.h> #include<math.h> double f(int n) { if (n==1) return 1; else подробнее

Показать сообщение отдельно
Asker
114 / 102 / 11
Регистрация: 18.12.2010
Сообщений: 378
18.02.2013, 14:53     Как работает алгоритм возведения числа a в степень n ?
Добрый день! Собственно, вопрос не по коду, а по алгоритму
Почему после выполнения этой программы в res содержится значение an ? Как оно так получается?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
...
int a;
unsigned int n, k;
long long int res, c;
 
// ... ввод a и n
 
res=1;
c=a;
k=n;
 
if (!n) res = 1; // до сюда все понятно
else while (k) // а дальше не очень
{
    if (!(k%2))
        {
        k/=2;
        c*=c;
        }
    else
        {
        k--;
        res*=c;
        }
}
cout << res << endl;
Добавлено через 19 минут
я на бумажке представил, как бы работала программа для a = 3, n = 15
k==15
c==3;

по циклу, пока k>0

k было равно 15, стало : res = 31; c = 31, k = 14
k было равно 14, стало : res = 31; c = 32, k = 7
k было равно 7, стало : res = 33; c = 32, k = 6
k было равно 6, стало : res = 33; c = 34, k = 3
k было равно 3, стало : res = 37; c = 34, k = 2
k было равно 2, стало : res = 37; c = 38, k = 1
k было равно 1, стало : res = 315; c = 38, k = 0


КАК ТАК?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 15:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru