碰撞的小球

来源:CCF

标签:

参考资料:

相似题目:

题目

数轴上有一条长度为L(L为偶数)的线段,左端点在原点,右端点在坐标L处。有n个不计体积的小球在线段上,开始时所有的小球都处在偶数坐标上,速度方向向右,速度大小为1单位长度每秒。
当小球到达线段的端点(左端点或右端点)的时候,会立即向相反的方向移动,速度大小仍然为原来大小。
当两个小球撞到一起的时候,两个小球会分别向与自己原来移动的方向相反的方向,以原来的速度大小继续移动。
现在,告诉你线段的长度L,小球数量n,以及n个小球的初始位置,请你计算t秒之后,各个小球的位置。

输入

输入的第一行包含三个整数n, L, t,用空格分隔,分别表示小球的个数、线段长度和你需要计算t秒之后小球的位置。
第二行包含n个整数a1, a2, …, an,用空格分隔,表示初始时刻n个小球的位置。

输出

输出一行包含n个整数,用空格分隔,第i个整数代表初始时刻位于ai的小球,在t秒之后的位置。

输入样例1

3 10 5
4 6 8

输出样例1

7 9 9

输入样例2

10 22 30
14 12 16 6 10 2 8 20 18 4

输出样例2

6 6 8 2 4 0 4 12 10 2

样例说明

提示

因为所有小球的初始位置都为偶数,而且线段的长度为偶数,可以证明,不会有三个小球同时相撞,小球到达线段端点以及小球之间的碰撞时刻均为整数。
同时也可以证明两个小球发生碰撞的位置一定是整数(但不一定是偶数)。
对于所有评测用例,1 ≤ n ≤ 100,1 ≤ t ≤ 100,2 ≤ L ≤ 1000,0 < ai < L。L为偶数。
保证所有小球的初始位置互不相同且均为偶数。

解题思路

首先我们需要知道,在经过t时间之后,小球的相对位置是不变的,比如最左边的小球经过t时间之后,还是在最左边。其次,我们需要理解两个小球相撞的过程,小球A沿正方向,和小球B沿负方向相撞后,两个小球将沿着与原方向相反的方向前进,也就是说A沿负方向,B沿正方向。不妨理解为两个小球发生了穿透,但是A成为了B,B成为了A,继续沿着原来的方向前进。这样想来,便可以轻松得到这些小球在经过t时间之后的位置。

参考代码

#include<stdio.h>
#include<algorithm>
#define MAXN 105
using namespace std;
struct Ball{int index; //序号 int order; //相对位置int pos;
}ball[MAXN];bool cmp_order(Ball a, Ball b){return a.pos<b.pos;
}bool cmp_index(Ball a, Ball b){return a.index<b.index;
}int main(){int n,L,t;scanf("%d%d%d",&n,&L,&t);for(int i=0;i<n;i++){scanf("%d",&ball[i].pos);ball[i].index=i;}int tmp[MAXN]={0}; //tmp[i]为第i个小球在t时间之后的位置for(int i=0;i<n;i++){tmp[i]=ball[i].pos+t;//计算t时间之后在数轴上的位置//通过判断tmp[i]是奇数个L长度,还是偶数个L长度,计算到零点的距离if((tmp[i]/L)%2==1) tmp[i]=L-tmp[i]%L; else tmp[i]=tmp[i]%L;} sort(tmp,tmp+n); //按照位置从小到大对这些小球排序,由于相对位置不变,tmp[i]表示相对位置为i的小球所在的距离 sort(ball,ball+n,cmp_order); //按照相对位置对原来的小球进行排序for(int i=0;i<n;i++){ball[i].order=i;}sort(ball,ball+n,cmp_index); //还原为按序号排序,按要求输出 for(int i=0;i<n;i++){printf("%d ",tmp[ball[i].order]);}return 0;
}

CCF计算机软件能力认证试题练习:201803-2 碰撞的小球相关推荐

  1. CCF计算机软件能力认证试题练习:201903-1 小中大

    小中大 来源:CCF 标签: 参考资料: 相似题目: 背景 在数据分析中,最小值最大值以及中位数是常用的统计信息. 题目 老师给了你 n 个整数组成的测量数据,保证有序(可能为升序或降序),可能存在重 ...

  2. CCF计算机软件能力认证试题练习:201809-2 买菜

    买菜 来源:CCF 标签: 参考资料: 相似题目: 题目 小H和小W来到了一条街上,两人分开买菜,他们买菜的过程可以描述为,去店里买一些菜然后去旁边的一个广场把菜装上车,两人都要买n种菜,所以也都要装 ...

  3. CCF计算机软件能力认证试题练习:201909-2 小明种苹果(续)

    小明种苹果(续) 来源:CCF 标签: 参考资料: 相似题目: 题目 小明在他的果园里种了一些苹果树,这些苹果树排列成一个圆.为了保证苹果的品质,在种植过程中要进行疏果操作.为了更及时地完成疏果操作, ...

  4. CCF计算机软件能力认证试题练习:201609-3 炉石传说

    炉石传说 来源:CCF 标签: 参考资料: 相似题目: 题目 <炉石传说:魔兽英雄传>(Hearthstone: Heroes of Warcraft,简称炉石传说)是暴雪娱乐开发的一款集 ...

  5. CCF计算机软件能力认证试题练习:201803-4 棋局评估

    棋局评估 来源:CCF 标签: 参考资料: 相似题目: 题目 Alice和Bob正在玩井字棋游戏. 井字棋游戏的规则很简单:两人轮流往3*3的棋盘中放棋子,Alice放的是"X", ...

  6. CCF计算机软件能力认证试题练习:201912-3 化学方程式

    化学方程式 来源:CCF 标签: 参考资料: 相似题目: 题目 化学方程式,也称为化学反应方程式,是用化学式表示化学反应的式子.给出一组化学方程式,请你编写程序判断每个方程式是否配平(也就是方程式中等 ...

  7. CCF计算机软件能力认证试题练习:201612-2 工资计算

    工资计算 来源: 标签: 参考资料: 相似题目: 题目 小明的公司每个月给小明发工资,而小明拿到的工资为交完个人所得税之后的工资.假设他一个月的税前工资(扣除五险一金后.未扣税前的工资)为S元,则他应 ...

  8. CCF计算机软件能力认证试题练习:201712-3 Crontab

    Crontab 来源: 标签: 参考资料: 相似题目: 题目 输入 输出 输入样例 3 201711170032 201711222352 0 7 * * 1,3-5 get_up 30 23 * * ...

  9. CCF计算机软件能力认证试题练习:201512-2 消除类游戏

    消除类游戏 来源: 标签: 参考资料: 相似题目: 题目 消除类游戏是深受大众欢迎的一种游戏,游戏在一个包含有n行m列的游戏棋盘上进行,棋盘的每一行每一列的方格上放着一个有颜色的棋子,当一行或一列上有 ...

最新文章

  1. 使用Mockito进行Java单元测试
  2. (多线程)leetcode1195. 交替打印字符串 最简单解法一个变量搞定
  3. 用python的正则表达式实现简单的计算器功能
  4. html5视频播放器使用,视频站启用html5播放器
  5. hashtable资料
  6. [Swift]LeetCode862. 和至少为 K 的最短子数组 | Shortest Subarray with Sum at Least K
  7. MySQL进阶13--常见六大约束: 非空/默认/主键/唯一约束/检查约束/外键约束--表级约束 / 列级约束...
  8. Maven与Ant使用reportNG代替testng
  9. Axure RP for Mac中文汉化破解版
  10. 使用 HTML、CSS 和 JS 制作一个中国象棋
  11. 美团下拉菜单html5,jQuery vue仿美团订餐系统分类菜单切换代码
  12. Java垃圾回收的时间点
  13. JAVA 获取文件指纹
  14. windows下cfree5中%d输出浮点数的问题
  15. 毕业设计之甘特图制作
  16. 基于Go语言GoFrame+Vue+ElementUI的OA办公系统
  17. 微光集市-登陆后用户对购物车的操作(版本4.0)
  18. 原生video标签隐藏底部功能按钮
  19. CAD图形设置:层高与填充设置教程
  20. 浙江移动盒子魔和m401h 2+8G破解使用网络安装软件

热门文章

  1. 猿创征文|工具虽小,五脏俱全(这些年常用的开发者小工具)
  2. 手机钢琴软件太好玩啦!弹奏乐曲分享
  3. 封装一个全局使用的二次确认弹窗
  4. 费希尔阀门定位器DVC6200的调试
  5. Java专项练习一(选择题)
  6. 小红书素人KOC素人笔记种草传播如何做到专业不踩坑?
  7. 诺基亚支持java的电信手机,诺基亚6支持电信吗 诺基亚6支持联通卡吗【详解】...
  8. 【图像处理】基于matlab拉普拉斯金字塔图像融合
  9. 每日自动发邮件(Python +QQ邮箱 + Windows 10定时任务)
  10. 霍夫变换——HoughLines、HoughLinesP和HoughCircles