cf-474D题解

时间:2020-07-11 22:28:27   收藏:0   阅读:44

CF-474D

5=1+1+1+1+1(RRRRR)
5=2+1+1+1(WWRRR)
5=1+2+1+1(RWWRRR)
5=1+1+2+1(RRWWR)
5=1+1+1+2(RRRWWW)
5=2+2+1(WWWWR)
5=2+1+2(WWRWW)
5=1+2+2(RWWWW)

#include<bits/stdc++.h>
using namespace std;
#pragma GCC optimize(2)
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
const int NUM=1e5+10;
const ll MOD=1e9+7;
ll n,k;
ll d[NUM],sum[NUM];

void slove()
{
    d[0]=1;
    for(int i=1;i<=NUM;++i){
        d[i]=(d[i-1]);
        d[i]%=MOD;
        if(i>=k){
            d[i]+=(d[i-k]%MOD);
            d[i]%=MOD;
        }
    }
    sum[0]=0;
    for(int i=1;i<=NUM;++i){
        sum[i] = (sum[i-1]%MOD + d[i]%MOD+MOD)%MOD;
    }
    //for(int i=0;i<=100;++i) cout<<sum[i]<<"\n";
}



int main()
{
    ios::sync_with_stdio(false);
    cin>>n>>k;
    slove();
    for(int i=1;i<=n;++i){
        //cin>>a[i]>>b[i];
        int a,b;
        cin>>a>>b;
        cout<<(sum[b]-sum[a-1]+MOD)%MOD<<"\n";
    }
    return 0;
}

原文:https://www.cnblogs.com/DrumWashingMachine-Lhy-NoobInCsu/p/13285448.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!