func_code_string: #include <bits/stdc++.h>   using namespace std;   char IO;   inline long long rd() {     long long res = 0, f = 1;     while (IO = getchar(), IO < 48 || IO > 57)       if (IO ==  - ) f = 0;     do res = (res << 3) + (res << 1) + (IO ^ 48);     while (IO = getchar(), IO >= 48 && IO <= 57);     if (f) return res;     return -res;   }   const long long P = 1e9 + 7, M = 1e5 + 5;   long long fac[M], pw[M], inv[M];   char str[M];   long long Pow(long long a, long long b) {     long long res = 1;     for (; b; b >>= 1, a = a * a % P)       if (b & 1) res = res * a % P;     return res;   }   void init() {     fac[0] = pw[0] = 1;     for (long long i = 1, iend = M - 5; i <= iend; ++i) {       fac[i] = fac[i - 1] * i % P;       pw[i] = pw[i - 1] * 10 % P;     }     inv[M - 5] = Pow(fac[M - 5], P - 2);     for (long long i = M - 5, iend = 1; i >= iend; --i)       inv[i - 1] = inv[i] * i % P;   }   long long C(long long n, long long m) {     if (n < 0 || m < 0 || n < m) return 0;     return fac[n] * inv[m] % P * inv[n - m] % P;   }   int main() {     init();     long long n = rd(), m = rd(), s = 0, ans = 0;     scanf( %s , str + 1);     for (long long i = n, iend = 1; i >= iend; --i) {       ans = (ans + (s + C(i - 1, m) * pw[n - i]) * (str[i] -  0 ) % P) % P;       s = (s + C(i - 2, m - 1) * pw[n - i] % P);     }     cout << ans << endl;   }   