#include<bits/stdc++.h> usingnamespace std; #ifdef LOCAL #define debug(...) fprintf(stdout, ##__VA_ARGS__) #else #define debug(...) void(0) #endif #define int long long inlineintread(){int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+ (x<<3)+(ch^48);ch=getchar();}return x*f;} #define Z(x) (x)*(x) #define pb push_back #define fi first #define se second //#define M #define mo 998244353 #define N 1010 int n, m, i, j, k, T; int f[N][N], g[N][N]; char s[N];
signedmain() { #ifdef LOCAL freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); #endif // srand(time(NULL)); T = read(); while(T--) { n = read(); scanf("%s", s + 1); memset(f, 0, sizeof(f)); memset(g, 0, sizeof(g)); f[0][0] = 0; g[0][0] = 1; for(i = 1; i <= n; ++i) { int d = s[i] - '0'; for(k = 0; k < n; ++k) { f[i][k] = f[i - 1][k] * 10 + d * g[i - 1][k] + d * f[i - 1][k- 1]; g[i][k] = g[i - 1][k] + f[i - 1][k - 1]; f[i][k] %= mo; g[i][k] %= mo; } } for(i = 0; i < n; ++i) printf("%lld ", f[n][i]); printf("\n"); }
usingnamespace atcoder; #ifdef LOCAL #define debug(...) fprintf(stdout, ##__VA_ARGS__) #else #define debug(...) void(0) #endif #define int long long inlineintread(){int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1; ch=getchar();}while(ch>='0'&&ch<='9'){x=(x<<1)+ (x<<3)+(ch^48);ch=getchar();}return x*f;} #define Z(x) (x)*(x) #define pb push_back #define fi first #define se second //#define M #define mo 998244353 #define N 100010 structMatrix { vector<int>a[2][2]; }; template<typename T> vector<T>& operator+=(vector<T>& a, const vector<T>& b) { if (a.size() < b.size()) a.resize(b.size()); for (int i = 0; i < b.size(); ++i) a[i] += b[i], a[i] %= mo; // 去尾零,不需要可以注释掉 while (!a.empty() && a.back() == 0) a.pop_back(); return a; } Matrix operator * (Matrix A, Matrix B) { Matrix C; int i, j, k; for(i = 0; i <= 1; ++i) for(j = 0; j <= 1; ++j) for(k = 0; k <= 1; ++k) C.a[i][j] += convolution(A.a[i][k], B.a[k][j]); return C; } int n, m, i, j, k, T; char s[N];
signedmain() { #ifdef LOCAL freopen("in.txt", "r", stdin); freopen("out.txt", "w", stdout); #endif // srand(time(NULL)); T = read(); while(T--) { n = read(); scanf("%s", s + 1); vector<Matrix>M(n + 1); for(i = 1; i <= n; ++i) { int d = s[i] - '0'; M[i].a[0][0] = {10, d}; M[i].a[0][1] = {0, 1}; M[i].a[1][0] = {d}; M[i].a[1][1] = {1}; } function<Matrix(int, int)> solve; solve = [&] (int l, int r) -> Matrix { if(l == r) return M[l]; int mid = (l + r) >> 1; auto t1 = solve(l, mid); auto t2 = solve(mid + 1, r); return t1 * t2; }; auto ans = solve(1, n).a[1][0]; for(i = 0; i < n; ++i) printf("%lld ", ans[i]); printf("\n"); } return0; }