题目好长大致意思就是计算(A1B1+A2B2+ ... +AHBH)mod M.这个式子的值
用同余定理就好了
(a+b)%c=((a%c)+(b%c))%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 27 28
#include
<cstdio>
long
long
Qpow
(
long
long
a
,
long
long
n
,
long
long
mod
)
{
long
long
cnt
=
1
;
long
long
base
=
a
%
mod
;
while
(
n
)
{
if
(
n
&
1
)
{
cnt
=(
cnt
*
base
)%
mod
;
}
base
=(
base
*
base
)%
mod
;
n
>>=
1
;
}
return
cnt
;
}//快速幂的模板
int
main
()
{
int
T
;
scanf
(
"%d"
,&
T
);
while
(
T
--)
{
long
long
c
;
int
t
;
long
long
sum
=
0
;
scanf
(
"%lld%d"
,&
c
,&
t
);
for
(
int
i
=
0
;
i
<
t
;
i
++)
{
long
long
a
,
n
;
scanf
(
"%lld%lld"
,&
a
,&
n
);
sum
+=
Qpow
(
a
,
n
,
c
);
}
printf
(
"%d
\n
"
,
sum
%
c
);//最终取余
}
}