func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MOD = (int)1e9 + 7;   const int MAXN = 100100;   inline void add(int &a, int b) {     a += b;     if (a >= MOD) {       a -= MOD;     }   }   inline int mul(int a, int b) { return (a * 1LL * b) % MOD; }   inline int fastPow(int a, int b) {     int r = 1;     while (b) {       if (b & 1) {         r = mul(r, a);       }       a = mul(a, a);       b >>= 1;     }     return r;   }   inline int inverse(int a) { return fastPow(a, MOD - 2); }   int f[MAXN];   int invf[MAXN];   int ten[MAXN];   inline int c(int n, int k) {     if (k < 0) {       return 0;     }     if (n < k) {       return 0;     }     return mul(mul(f[n], invf[k]), invf[n - k]);   }   int main() {     clock_t start_time = clock();     f[0] = invf[0] = 1;     ten[0] = 1;     for (int i = 1; i < MAXN; i++) {       ten[i] = mul(ten[i - 1], 10);       f[i] = mul(f[i - 1], i);       invf[i] = inverse(f[i]);     }     int n, k;     while (scanf( %d%d , &n, &k) == 2) {       char ss[n + 1];       scanf( %s , ss);       vector<int> s(n, 0);       for (int i = 0; i < n; i++) {         s[i] = ss[i] -  0 ;         if (i > 0) {           add(s[i], s[i - 1]);         }       }       int ans = 0;       for (int d = 0; d <= n - 2; d++) {         int val = mul(ten[d], c(n - d - 2, k - 1));         val = mul(val, s[n - d - 2]);         add(ans, val);       }       for (int i = 0; i < n; i++) {         int val = mul(ten[n - i - 1], ss[i] -  0 );         val = mul(val, c(i, k));         add(ans, val);       }       printf( %d n , ans);     }     (void)42;     ;     return 0;   }   