#include #include #include using namespace std; const int MOD = 998244353; const int INF = 1e18; int main() { string N; cin >> N; int n = N.size(); // Initialize dp arrays vector> dp(2, vector(100, 0)); dp[0][0] = 1; for (int i = 0; i < n; ++i) { vector> edp(2, vector(100, 0)); int ni = N[i] - '0'; // Convert char to int for (int j = 0; j < 100; ++j) { int to = 10 * j; // Loop for dp[0] for (int k = 0; k <= ni; ++k) { if (to + k != 404) { int nx = (to + k) % 100; if (k < ni) { edp[1][nx] += dp[0][j]; edp[1][nx] %= MOD; } else if (k == ni) { edp[0][nx] += dp[0][j]; edp[0][nx] %= MOD; } } } // Loop for dp[1] for (int k = 0; k < 10; ++k) { if (to + k != 404) { int nx = (to + k) % 100; edp[1][nx] += dp[1][j]; edp[1][nx] %= MOD; } } } dp = edp; } long long ans = 0; for (int i = 0; i < 100; ++i) { ans += dp[0][i] + dp[1][i]; ans %= MOD; } ans = (ans - 1 + MOD) % MOD; // Ensuring non-negative modulo result cout << ans << endl; return 0; }