#include <locale>
#include <iostream>
#include <conio.h>
using namespace std;
typedef unsigned __int32 _uint;
typedef unsigned __int64 _luint;
// Ф-я вычисляющая зачение выражения (a^b)%p
_uint mmod(_uint a,_uint b,_uint p)
{
_luint result=1;
while(b--)
{
result=(result*a)%p;
}
return static_cast<_uint>(result);
}
// 2-я ф-я вычисляющая зачение выражения (a^b)%p
_uint mmod_fast(_uint a,_uint b,_uint p)
{
_luint result=1;
while(b--)
{
if(b&1)
{
a=(static_cast<_luint>(a)*a)%p;
b>>=1;
}
result=(result*a)%p;
}
return static_cast<_uint>(result);
}
int main()
{
locale::global(locale(""));
// Исходные данные
_uint a=55441234,b=76432387,p=12345678;
cout<<'('<<a<<'^'<<b<<")%"<<p<<'='<<mmod(a,b,p)<<endl
<<"2-й вариант:"<<endl
<<'('<<a<<'^'<<b<<")%"<<p<<'='<<mmod_fast(a,b,p)<<endl;
_getch();
return 0;
}
(55441234^76432387)%12345678=8222230
2-й вариант:
(55441234^76432387)%12345678=8222230
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.