链接
题目描述
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;
}