func_code_string: #include <bits/stdc++.h>   using namespace std;   int powm[100005];   int fact[100005];   int sum[100005];   string s;   void powers_of_10(int m) {     powm[0] = 1;     for (int i = 1; i <= m; i++) powm[i] = 1LL * powm[i - 1] * 10 % 1000000007;   }   void factorials(int m) {     fact[0] = 1;     for (int i = 1; i <= m; i++) fact[i] = 1LL * i * fact[i - 1] % 1000000007;   }   void sums(int m) {     sum[0] = s[0] -  0 ;     for (int i = 1; i < m; i++) {       sum[i] = sum[i - 1] + (s[i] -  0 );       if (sum[i] >= 1000000007) sum[i] -= 1000000007;     }   }   void euclid(int a, int b, long long& x, long long& y) {     if (b == 0) {       x = 1;       y = 0;     } else {       long long x0, y0;       euclid(b, a % b, x0, y0);       x = y0;       y = x0 - (a / b) * y0;     }   }   int invers_modular(int n) {     long long x, y;     euclid(n, 1000000007, x, y);     while (x < 0) x += 1000000007;     return (int)x;   }   int comb(int n, int k) {     if (k > n) return 0;     int Ret = fact[n];     Ret = 1LL * Ret * invers_modular(fact[n - k]) % 1000000007;     Ret = 1LL * Ret * invers_modular(fact[k]) % 1000000007;     return Ret;   }   int main() {     ios_base::sync_with_stdio(false);     int n, k;     cin >> n >> k;     cin >> s;     powers_of_10(n);     factorials(n);     sums(n);     int FirstSum = 0;     int SecondSum = 0;     for (int i = 0; i < n; i++) {       FirstSum += 1LL * (s[i] -  0 ) * powm[n - 1 - i] * comb(i, k) % 1000000007;       if (FirstSum >= 1000000007) FirstSum -= 1000000007;     }     for (int i = 0; i <= n - 2; i++) {       SecondSum += 1LL * (1LL * sum[n - i - 2] * powm[i] % 1000000007) *                    comb(n - i - 2, k - 1) % 1000000007;       if (SecondSum >= 1000000007) SecondSum -= 1000000007;     }     cout << (SecondSum + FirstSum) % 1000000007;   }   