func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long MOD = 1e9 + 7;   const int SIZE = 1e6 + 5;   const long long INF = 1LL << 55;   const double eps = 1e-10;   long long expo(long long a, long long b) {     if (b == 0) return 1;     long long h = expo(a, b / 2);     h = (h * h) % MOD;     if (b % 2) h = (h * a) % MOD;     return h;   }   long long f[100009];   long long ivf[100009];   long long C(long long a, long long b) {     return (((f[a] * ivf[b]) % MOD) * ivf[a - b]) % MOD;   }   char s[100009];   long long dp[100009];   int main() {     f[0] = ivf[0] = 1;     for (int i = (1); i < (100009); ++i) {       f[i] = (f[i - 1] * i) % MOD;       ivf[i] = expo(f[i], MOD - 2);     }     int n, k;     scanf( %d%d , &n, &k);     scanf( %s , (s));     for (int j = (1); j < (n + 1); ++j) {       if (n - j - 1 < k - 1)         dp[j] = dp[j - 1];       else         dp[j] = (dp[j - 1] + expo(10, j - 1) * C(n - j - 1, k - 1)) % MOD;     }     long long ans = 0;     for (int i = 0; i < (n); ++i) {       ans = (ans + (long long)(s[i] -  0 ) * dp[n - i - 1]) % MOD;       if (i >= k && n - i - 1 >= 0)         ans = (ans +                (long long)(s[i] -  0 ) * (expo(10, n - i - 1) * C(i, k)) % MOD) %               MOD;     }     printf( %I64d , ans);   }   