链接
题目描述
T组询问,每次把数字k复制n遍并且对模数取模
思路
答案应为
k
k
k
k
k
k
k
%
m
o
kkkkkkk\ \%\ mo
kkkkkkk % mo
k
k
k
k
k
k
k
=
1111111
∗
k
kkkkkkk =1111111 * k
kkkkkkk=1111111∗k
%
m
o
\%mo
%mo
=
1
0
n
−
1
9
∗
k
\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ = \frac{10^n-1}{9} * k
=910n−1∗k
%
m
o
\% mo
%mo
乘法逆元嘛不是
a
n
s
≡
1
0
n
−
1
∗
9
−
1
∗
k
(
m
o
d
m
o
)
ans \equiv 10^{n - 1} * 9^{-1}*k (\bmod\ mo)
ans≡10n−1∗9−1∗k(mod mo)
9
−
1
(
m
o
d
m
o
)
9^{-1}(\bmod\ mo)
9−1(mod mo)就
9
m
o
−
2
(
m
o
d
m
o
)
9^{mo-2} (\bmod\ mo)
9mo−2(mod mo)
代码
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#define ll long long
using namespace std;
ll ny, n, k, T;
const ll mo = 998244353;
ll ksm(ll x, ll y)
{
ll re = 1;
while(y) {
if(y & 1) re = (re * x) % mo;
x = (x * x) % mo;
y >>= 1;
}
return re % mo;
}
int main()
{
scanf("%lld", &T);
ll ny = ksm(9, mo - 2) % mo;
for(int i = 1; i <= T; ++i)
{
scanf("%lld%lld", &n, &k);
printf("%lld\n", (((ksm(10, n) - 1) % mo * ny) % mo * k) % mo);
}
return 0;
}