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

Возведение в степень по модулю. Большие числа - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Эмуляция http://www.cyberforum.ru/cpp-beginners/thread847309.html
Написать функцию которая имеет на входе два числа с плавающей точкой типа float, но представленные как long int unsigned и выдает результат типа float сумма или разность третий операнд. Здравствуйте ребята! Помоги пожалуста с задачей вот написал чтото не работает! #include <iostream> float schet (unsigned long x,unsigned long y, char z ) { long unsigned int...
C++ Шаблоны функции Делаю задание по программированию, нужна явная специализация шаблона. Пишет ошибку: obj\Debug\main.o||In function `main':| C:\Users\sklad\Documents\CODEBLOCK\work8.6\main.cpp|16|undefined reference to `int maxn<int>(int*, int)'| C:\Users\sklad\Documents\CODEBLOCK\work8.6\main.cpp|17|undefined reference to `double maxn<double>(double*, int)'|... http://www.cyberforum.ru/cpp-beginners/thread847289.html
const в конце объявления метода делает только *this константным? C++
То есть const в методе int foo(int x, int y) const; говорит, что внутри метода не будут переопределяться поля класса, а точнее const говорит, что *this будет константным? И на этом все?
C++ Дан массив размера N. Обнулить элементы массива, расположенные между его минимальным и максимальным элементами
помогите! ! ! работу нужно сделать в С++
C++ Поиск по базе в файле http://www.cyberforum.ru/cpp-beginners/thread847250.html
вот тут решил сделать базу данных в консоли смутил поиск ну не как он не хочет искать то что нужно помогите разобраться с этим поиском вот весь код базы может кому пригодиться... #include <stdio.h> #include <conio.h> #include <string.h> #include <iostream> #include <stdlib.h> #include <clocale> #include <windows.h> #include <fstream> using namespace std;
C++ Проблемы с терминологией. Что такое : ключевые слова, спецификаторы, квалификаторы? Чаще всего встречаю только список ключевых слов, которые потом могут называться по другому, то есть в списке они ключевые слова почти все, но потом разные авторы называют их по разному, к примеру одно и тоже ключевое слово могут называть и спецификатором и квалификатором и служебным словом и т.п. Можно ли где-то прочитать об подобной терминологии в C++, а то не получилось найти? Желательно чтобы... подробнее

Показать сообщение отдельно
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
26.04.2013, 00:31     Возведение в степень по модулю. Большие числа
Как-то так.
Можно даже тип exp сменить на unsigned long long, все равно оно мгновенно считать будет за счет логарифмической сложности.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
unsigned powmod(unsigned base, unsigned exp, unsigned modulo)
{
    unsigned res = 1;
    
    while (exp != 0) 
    {
        if ((exp & 1) != 0)
        {
            res = (1ll * res * base) % modulo;
        }
        
        base = (1ll * base * base) % modulo;
        exp >>= 1;
    }
    
    return res;
}
Добавлено через 10 минут
Цитата Сообщение от diagon Посмотреть сообщение
(1ll * res * base)
Цитата Сообщение от diagon Посмотреть сообщение
(1ll * base * base)
Вот эту часть можно ускорить за счет лоулевельщины.
Для студии есть специальный интринсик. Для gcc аналога не нашел, так что надо либо надеяться на то, что он оптимизирует это самостоятельно, либо использовать asm-вставки.
 
Текущее время: 14:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru