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

A^B mod C - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Функции Си++ http://www.cyberforum.ru/cpp-beginners/thread339660.html
Подскажите, пожалуйста, книгу, в которой содержатся описания всех (или практически всех) библиотечных функций С++. Знаю, что в Интернете много порталов по этому вопросу, но хотелось бы именно в книжном формате. Заранее благодарен.
C++ Выпуклый многоугольник Вот программа: #include <iostream> #include <cmath> #define size 100000 using namespace std; class point { http://www.cyberforum.ru/cpp-beginners/thread339650.html
scanf for double C++
Не подскажите как будет выглядеть функция scanf если нужно считать double Заранее спасибо
C++ Как реализовать в программе поддержку skin-ов
Здравствуйте! Я пытаюсь сделать в Microsoft Visual Studio 2010 на Visual C++ плеер на библиотеке BASS.dll. Как сделать, чтобы программа поддерживала скины? (Т.е. чтобы имелся ini-файл, содержащий сведения о положении элементов, цветах текстов, png-файлах и т.д., и программа при запуске должна считывать адреса картинок, положение элементов из этого файла). Зараннее спасибо! Добавлено через...
C++ Builder Builder С++ и тип данных char http://www.cyberforum.ru/cpp-beginners/thread339619.html
//--------------------------------------------------------------------------- #pragma hdrstop #include <tchar.h> //--------------------------------------------------------------------------- #pragma argsused #include <iostream.h> using namespace std;
C++ Реализация класса «двусвязный список» потребовалось выполнить такое задание, вот только не могу сообразить с чего начать и как собственно будет выглядеть код (в связи с тем, что не трогал студию, а задание еще апрельской давности). Если не сложно, то напишите хотя бы начало кода с пояснениями, дальше, надеюсь, сам начну понимать что к чему. Заранее спасибо. Вот как выглядит задание полностью: Реализация класса «двусвязный список».... подробнее

Показать сообщение отдельно
Paporotnik
383 / 227 / 7
Регистрация: 06.07.2011
Сообщений: 512
07.08.2011, 00:10     A^B mod C
если ^ все-таки возведение в степень, то используется модулярная арифметика. возведение A в степень B по модулю C это повторяющееся умножение A на A по модулю С B раз. А умножение по модулю C это повторяющееся сложение A и A по модулю С.

если в коде, A,B и С большие положительные числа:

сложение по модулю (т.е. получаем именно (A+B)%C)
C++
1
2
3
4
long long int addition (long long int A, long long int B, long long int C) {
if (C-A<B) return ((((A>>1)+(B>>1))%(C>>1))<<1)+(A&1)+(B&1)-(C&1);
return (A+B)%C;
}
умножение по модулю:
C++
1
2
3
4
5
6
7
8
9
long long int mulptiplication (long long int A, long long int B, long long int C) {
long long int remainder = 0;
while (B) {
  if (B&1) remainder=addition(A,remainder,C);
  A=addition(A,A,C);
  B>>=1;
}
return remainder;
}
возведение в степень по модулю:
C++
1
2
3
4
5
6
7
8
9
10
long long int power (long long int A, long long int B, long long int C) {
long long int remainder = 1;
if (!B) return -1;
while (B) {
  if (B&1) remainder=multiplication(A,remainder,C);
  A=multiplication(A,A,C);
  B>>=1;
}
return remainder;
}
 
Текущее время: 20:02. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru