【数论】【乘法逆元】Day6-A

链接

A

题目描述

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=1111111k % m o \%mo %mo
                  = 1 0 n − 1 9 ∗ k \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ = \frac{10^n-1}{9} * k                  =910n1k % 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) ans10n191k(mod mo)
9 − 1 (   m o d     m o ) 9^{-1}(\bmod\ mo) 91(mod mo) 9 m o − 2 (   m o d     m o ) 9^{mo-2} (\bmod\ mo) 9mo2(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;
}

Supongo que te gusta

Origin blog.csdn.net/LTH060226/article/details/119701874
Recomendado
Clasificación