long long mod = 1000000007; int main() { long long t, k; cin >> t >> k; vector<int> a(t); vector<int> b(t); int bmax = 0; for (int i = 0; i < t; ++i) { cin >> a[i] >> b[i]; bmax = max(bmax, b[i]); } vector<long long> buf(bmax + 1); vector<long long> sum(bmax + 1, 0); for (int i = 0; i < k&&i <= bmax; ++i) buf[i] = 1; for (int i = k; i <= bmax; ++i) buf[i] = (buf[i - 1] + buf[i - k]) % mod; for (int i = 1; i <= bmax; ++i) sum[i] = (buf[i] + sum[i - 1]) % mod; for (int i = 0; i < t; ++i) cout << (sum[b[i]] - sum[a[i] - 1] + mod) % mod << endl; return 0; } 第五题代码,DP就可以了,注意最后数值溢出的问题;
点赞 5

相关推荐

程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务