Content

圣诞老人坐在一个桌子被摆成 \(m\) 行 \(n\) 列的教室里。每个桌子有两个座位,每个位置从左往右都有编号,依次为 \(1,2,3,...,2\times n\times m\)。已知圣诞老人坐在编号为 \(k\) 的位置,求:

  • 圣诞老人坐在第几列第几行。
  • 圣诞老人的座位是在桌子的左边还是右边。

数据范围:\(1\leqslant n,m\leqslant 10000,1\leqslant k\leqslant 2\times 10^8\)(\(2\times n\times m\) 的最大值)。

Solution

首先,我们可以求出圣诞老人在第几列第几行。

我们不妨把一个桌子看成一个集体,然后这样编号:从第一列第一行开始,先从前往后,再从左往右,依次编号为 \(1,2,3,...,n\times m\)。那么,我们发现,圣诞老人此时的编号 \(s\) 就是 \(\left\lceil\dfrac{k}{2}\right\rceil\)。然后我们可以根据这个来求出列数和行数,分别是 \(\left\lceil\dfrac{s}{m}\right\rceil\),\(\begin{cases}m&m\mid s\\s\mod m&m\nmid s\end{cases}\)。

至于在左在右的问题,那就更简单了:如果 \(k\) 是奇数,那么就应该坐在桌子的左边,否则就应该坐在桌子的右边。

Code

#include <cstdio>
#include <algorithm>
#include <cmath>
#include <iostream>
using namespace std; int n, m, k, mm, r, l; int main() {
scanf("%d%d%d", &n, &m, &k);
mm = (int)ceil(k / 2.0);
r = (int)ceil(mm * 1.0 / m), l = (mm % (m + 1) + 1);
printf("%d %d %c", r, l, (k % 2 ? 'L' : 'R'));
}

最新文章

  1. Orcale 数据库客户端PL/SQL中文乱码的问题
  2. ELF动态链接
  3. Asp.Net MVC4 + Oracle + EasyUI 学习 第一章
  4. 最全的Resharper快捷键汇总
  5. OpenStack Networking overview
  6. Sqlite注入测试
  7. MSCRM 2011/2013 单点登录 实现
  8. 查看oracle 数据库的DBID
  9. JAVA正则表达式语法大全
  10. 显示推送数据到mq成功,但是mq管理器中消息数量没增长
  11. (转)iOS7人机界面设计规范 - 目录
  12. Python之qq邮件
  13. Ajax+Spring MVC实现跨域请求(JSONP)(转)
  14. linux 下vim中关于删除某段,某行,或者全部删除的命令 ZZ
  15. 2018-软工机试-A-西班牙馅饼
  16. 通过awk获取netstat命令中的进程号
  17. 剑指offer(57)二叉树的下一个节点
  18. latex之插入向量、图片、编号
  19. RGB与CMYK以及加色与减色
  20. 网站性能测试指标(QPS,TPS,吞吐量,响应时间)详解

热门文章

  1. Springboot .properties或.yml配置文件读取pom.xml文件值
  2. python中else的三种用法
  3. Python之99乘法表代码
  4. Linux远程软件
  5. stat命令的实现-mysate(必做)
  6. JavaWeb 请求转发重定向
  7. Pollard-Rho 算法
  8. doxygen文件配置
  9. 【Python小试】判断一条序列GC含量高低
  10. 2020终于解决Chrome浏览器“崩溃啦”的问题!