Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define ll long long
- using namespace std;
- const int MAXN = 1e5 + 10;
- const int MOD = 1e9 + 7;
- ll bin_power(ll x, ll y){
- if (y == 0)
- return 1;
- if (y & 1){
- return (bin_power(x, y - 1) * x) % MOD;
- }
- ll z = bin_power(x, y >> 1);
- return (z * z) % MOD;
- }
- ll calc(ll x){
- ll y = x;
- vector <int> vec;
- while(y){
- vec.push_back(y % 10);
- y /= 10;
- }
- reverse(vec.begin(), vec.end());
- vector <ll> ans(10, 0);
- int len = vec.size();
- int mx = 0;
- for (int i = 0; i < len; i++){
- for (int j = 0; j < vec[i]; j++){
- if (len - i - 1 == 0){
- (ans[max(j, mx)] += 1) %= MOD;
- }
- else{
- for (int k = 0; k <= 9; k++){
- (ans[max(k, max(j, mx))] += (bin_power(k + 1, len - i - 1)
- - bin_power(k, len - i - 1) + MOD) % MOD) %= MOD;
- }
- }
- }
- mx = max(mx, vec[i]);
- }
- ans[mx]++;
- ll answer = 0;
- for (int i = 0; i <= 9; i++){
- (answer += (i * ans[i]) % MOD) %= MOD;
- }
- return answer;
- }
- int main(){
- ll l, r;
- cin >> l >> r;
- int sum = 0;
- /* for (int k = 1; k <= 9; k++)
- sum += bin_power(k + 1, 3) - (bin_power(k, 3));
- cout << sum;*/
- //cout << calc(r) << ' ' << calc(l - 1) << endl;
- cout << (calc(r) - calc(l - 1) + MOD) % MOD;
- }
Advertisement
Add Comment
Please, Sign In to add comment