式子求和为最低位减最高位,中间位置数字随意
#include <bits/stdc++.h> using namespace std; #define ll long long const int P = 1000000007; long long Pow(long long a,long long b) { long long ans=1; while(b) { if(b&1) ans=(ans*a)%P; a=(a*a)%P; b>>=1; } return ans; } int main() { long long n, k; cin >> n >> k; int p; if (k>0)p = 9 - k; if (k<0)p = 10 + k; if (k == 0)p = 9; long long sum = Pow(10, n - 2) % P; long long out = 0; for (int i = 0; i < p; i++) out = (out + sum) % P; cout << out << endl; return 0; }