题目
https://cn.vjudge.net/problem/Gym-102174J
题意
中文题
思路
dp
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mod=998244353;
ll dp[500005];
ll dpp[500005];
ll a[500005];
ll qpow(ll x,ll n)
{
ll ans = 1;
while(n)
{
if(n % 2) ans = ans * x%mod;
x = x*x%mod;
n /= 2;
}
return ans;
}
ll ok(int x)
{
ll qw = qpow(10,x);
qw %= mod;
ll ans = (qw*(qw-1)/2)%mod;
return ans;
}
int main()
{
int T;
scanf("%d",&T);
dp[1] = 0;
dpp[1] = 10;
a[1] = ok(1);
for(int i = 2;i <= 500000;i++)
{
dp[i] = 2*dpp[i-1]%mod;
dpp[i] = (10*dpp[i-1]%mod + 10*dp[i-1]%mod)%mod;
a[i] = ok(i);
}
while(T--)
{
int n;
scanf("%d",&n);
ll ans = a[n];
for(int i = 1;i <= n-2;i++)
{
ans = (ans + a[i]*dp[n-i]) % mod;
}
ans %= mod;
printf("%lld\n",ans);
}
return 0;
}