B. Magical Calendar(规律)

B. Magical Calendar(规律)_第1张图片 B. Magical Calendar(规律)_第2张图片

有个人想要规划日程,给出 n 代表她所规划的一周有几天,r 代表一周内她要至多学习(1~r)天,所有的天数必须构成连通块,问有几种规划方式

其实思路想一下,当 r==2 时,可以从第一周的  第一/二  天开始。

r == 3时,可以从第一周的  第 1/2/3 天开始 ,这样就是让我们求前 r 项和

但是要注意的是当 r >=n 时,出现的以下两种情况

 

ll go(ll r)
{
    if(r&1) return (r+1)/2*r;
    else return r/2*(r+1);
}    
int main()
{
    IOS;
    rush(){
        ll n,r;
        cin>>n>>r;
        ll ans;
        if(r>=n){
            r=n-1;
            ans=go(r)+1; //当等于 n 时,第一周全涂为一种情况
        }
        else ans=go(r);
        cout<

 

你可能感兴趣的:(CF)