B. Magical Calendar(规律)

 

有个人想要规划日程,给出 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<<ans<<endl;
    }
    PAUSE;
	return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章