Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <map>
- #include <vector>
- #include <set>
- #include <string>
- #include <list>
- #include <cstdlib>
- #include <algorithm>
- #include <iomanip>
- #include <queue>
- #include <stack>
- #include <bitset>
- #include <cassert>
- #include <cmath>
- #include <ctime>
- using namespace std;
- typedef unsigned long long li;
- typedef long double ld;
- typedef pair<int, int> pt;
- #define all(a) a.begin(), a.end()
- #define pb push_back
- #define mp make_pair
- #define forn(i,n) for (int i = 0; i < int(n); ++i)
- const int INF = 1e9;
- const ld EPS = 1e-9;
- bool read()
- {
- return true;
- }
- void solve()
- {
- int t, k;
- cin >> t >> k;
- const int N = 100010;
- vector<int> dp(N, 0);
- dp[0] = 1;
- int mod = 1e9 + 7;
- forn (i, N)
- {
- if (i + 1 < N)
- dp[i + 1] = (dp[i + 1] + dp[i]) % mod;
- if (i + k < N)
- dp[i + k] = (dp[i + k] + dp[i]) % mod;
- }
- vector<int> sum(N + 1);
- forn (i, N - 1)
- sum[i + 1] = (sum[i] + dp[i]) % mod;
- forn (i, t)
- {
- int l, r;
- cin >> l >> r;
- cout << (sum[r + 1] - sum[l] + mod) % mod << endl;
- }
- }
- int main() {
- #ifdef _DEBUG
- freopen("input.txt", "r", stdin);
- //freopen("output.txt", "w", stdout);
- #endif
- read();
- solve();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement