这是一道考验思维找规律的题,很有可做性。


正文

题意

一个 n * m 的矩阵,从左上角(1 , 1) 开始,先向下走直到最下方,再向右走到最右,再向上走一个,再走到最左......一直走到(1 , 2)为止

然后问你走完第k步后当前的坐标


分析

正常走然后算是不行的,时间太长,而且还很难写。

既然行走规则是固定的,那我们就试着找一下规律。

我们把行走分成两部分:

  • 第一部分:从(1 , 1)开始一直走到(n ,1)的过程(也就是从左上角走到左下角的过程)。

    这个过程我们可以知道,走完第k步的坐标是(k+1 , 1);

  • 第二部分,从(n ,2)开始走回到(1 , 2)的过程。

    这个过程我们首先可以看出,当走到第 n - i 行时,若 i 是偶数,则是从左向右走,是奇数则相反;

然后问题就转化成了求当前行是从左往右走还是从右往左走,那我们就把 k 截取第二部分的步数,根据 k 与 m-1(因为第一行已经走过) 的商是否为偶数来判断走向,然后根据在当前行走的步数来确定具体走到哪一格;

这样的方法可以确定 y ,那怎么确定 x 呢?

你确定了行数 x 不就出来了吗


代码

ps:注释掉的是我一开始的写法,思路一样但是比较冗余,化简后就是这个亚子了

#include<iostream>
#include<cstdio>
#include<queue>
#include<cstdlib>
#include<cmath>
#define maxn 100010 using namespace std; long long n,m,k,ans,x,y; int main(){
cin>>n>>m>>k;
if(k<n){
cout<<k+1<<" "<<1;
return 0;
}
k=k-n+1;
long long t=(k-1)/(m-1);
long long q=(k-1)%(m-1);
x=n-t;
if(k==0){
cout<<n<<" "<<1;
return 0;
}
// if(q==0 &&t%2!=0){
// y=m;
// cout<<x<<" "<<y;
// return 0;
// }
// if(q==0 &&t%2==0){
// y=2;
// cout<<x<<" "<<y;
// return 0;
// }
if(x%2==0){
y=q+2;
cout<<x<<" "<<y;
// if ( ((t%2)+1)%2==0 ){
// y=m-q+1;
// }
// if ( ((t%2)+1)%2!=0 ){
// y=q+1;
// }
}
else cout<<x<<" "<<m-q;
// cout<<k<<" "<<q<<" "<<t;
return 0;
}

若有问题请及时告知我,制作不易,不喜勿喷,谢谢。

CF976B的更多相关文章

随机推荐

  1. 手摸手带你用Hexo撸博客(一)

    原文地址 手摸手带你用Hexo撸博客(一) 环境搭建 安装 node 狂点下一步 命令行输入此条命令 如果能看到版本号则安装成功 node -v 安装Git (同上) 实在不会的小伙伴百度一下,教程很 ...

  2. .netcore 微服务快速开发框架 Anno&Viper -分布式锁是个什么鬼

    1.什么是锁 锁是为了解决多线程或者多进程资源竞争的问题. 同一进程的多个线程资源竞争可以用lock解决. lock 关键字可确保当一个线程位于代码的临界区时,另一个线程不会进入该临界区. 如果其他线 ...

  3. java字符统计+字符串压缩

    要实习了.突然发现自己好像什么都不会,就去看看题吧.在网上看到一个字符串压缩的题.看了一眼,感觉用python很简单.一个for循环+字典就可以搞定. 但是呢,主要还是java.下面就用java来实现 ...

  4. 容器编排系统K8s之访问控制--准入控制

    前文我们聊到了k8s的访问控制第二关RBAC授权插件的相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14216634.html:今天我们来聊一下k8 ...

  5. Docker本地镜像仓库搭建Nginx+BusyBox为例

    下载Busybox.Nginx镜像 docker pull busybox docker pull nginx 基于Busybox镜像创建容器,并在容器中做部分变更操作,生成新镜像 添加一些内容 正在 ...

  6. RocketMQ踩坑记

    一.前言 现在的主流消息队列基本都是kafka.RabbitMQ和RocketMQ,只有了解各自的优缺点才能在不同的场景选择合适的MQ,对比图如下: MQ对比图 本篇文章主要介绍我自己在跑官方demo ...

  7. 如何解决Visual Studio 首次调试 docker 的 vs2017u5 exists, deleting Opening stream failed, trying again with proxy settings

    前言 因为之前我电脑安装的是windows10家庭版,然而windows10家庭没有Hyper-v功能. 搜索了几篇windows10家庭版安装docker相关的博客,了解一些前辈们走过的坑. 很多人 ...

  8. Refit集成consul在asp.net core中的实践

    前言 github:https://github.com/alphayu/ Refit.WebApiClient.Feign等都是支持声名式的Restful服务调用的开源组件. 这个几个组件都综合研究 ...

  9. 新来的运维这样用HDFS,CIO都懵了···

    摘要:本文主要研究了HDFS文件系统的读写流程以及基于MRS在windows客户端下读写HDFS文件的实现. HDFS(Hadoop分布式文件系统)是Apache Hadoop项目的一个子项目. HD ...

  10. SQL注入之堆叠注入(堆查询注入)

    Stached injection -- 堆叠注入 0x00 堆叠注入的定义 ​ Stacked injection 汉语翻译过来后,称 为堆查询注入,也有称之为堆叠注入.堆叠注入为攻击者提供了很多的 ...