CodeForces 289A
2016-07-26 10:04
190 查看
题意:
第一行给两个数n,k,之后给出n 行每行两个数字a,b 表示区间的边界,每次调整的时候只能调整a-1或者b+1,而且区间之间不可相交,要保证n 个区间长度的和可以被k整除的移动步数。如果不用移动就能被K整除就输出0.
输入:
输出:
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;
}
第一行给两个数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;
}
相关文章推荐
- [置顶] SSH开发支付宝即时到账
- Introduction to Apache JMeter
- Ros By example-第七章 控制移动底座
- 调用ajax删除数据
- Spring初识
- 线程生命周期与线程池
- 推荐UML建模工具
- Android线程,线程池使用及原理博文参考
- 笔记5 LruCache
- JAVA中传递参数乱码问题
- 欢迎使用CSDN-markdown编辑器
- CentOS里yum命令详解
- POJ2060
- SlidingMenu和Listview冲突解决方案
- Compareble 接口与Comparator接口使用示例
- maven常用命令
- iOS图表绘制 - YMGraphView
- 写作参考站
- iptables只允许指定ip访问本机的指定端口
- c运行库、c标准库、windows API