原题链接:https://codeforces.com/contest/1327/problem/E
推出式子来就可以了
第一个是10,第二个是180,第三个是2610·········
会发现n=n*10n - ( a[1] * n + a[2] * (n-1) + ······+ a[n-1] * 2 )
代码:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll a[200005],mod=998244353;
ll apow(ll a,ll b)
{
ll s=1;
while(b)
{
if(b&1)
{s=s*a%mod;}
a=a*a%mod;
b>>=1;
}
return s;
}
int main()
{
ll n;
cin>>n;
if(n==1)
{cout<<"10"<<endl;return 0;}
a[1]=10;
ll val=20,op=20,basic=10;
for(int i=2;i<=n;i++)
{
a[i]=((i*apow(10,i))%mod-val+mod)%mod;
basic=(basic+a[i])%mod;
val=(val+basic+a[i])%mod;
}
for(int i=n;i>=1;i--)
{
cout<<a[i]<<" ";
}
return 0;
}