您的位置:首页 > 其它

CodeForces 289A

2016-07-26 10:04 190 查看
题意:

第一行给两个数n,k,之后给出n 行每行两个数字a,b 表示区间的边界,每次调整的时候只能调整a-1或者b+1,而且区间之间不可相交,要保证n 个区间长度的和可以被k整除的移动步数。如果不用移动就能被K整除就输出0.

输入:

2 3
1 2
3 4

3 7
1 2
3 3
4 7


输出:

2

0

分析:

如果区间长度之和对 k 有余,那么它的移动步数就是k的值减去对K的余数,即加上这些步数就可以对K取整了,每次只是动第一行

的a,第二行的b,这样就不会出现有区间重合的时候了。

代码:

#include<bits/stdc++.h>
using namespace std;

int main()
{
int n,k,ans,x,y;
scanf("%d%d",&n,&k);
for (int i=1; i<=n; i++)
{
scanf("%d%d",&x,&y);
ans+=y-x+1; //区间长度
}
if (ans%k==0)
cout <<0<<endl;
else
cout <<k-ans%k; //移动次数
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: