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


正文

题意

一个 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. 【译】对Rust中的std::io::Error的研究

    原文标题:Study of std::io::Error 原文链接:https://matklad.github.io/2020/10/15/study-of-std-io-error.html 公众 ...

  2. Ubuntu安装 Sublime Text 及常用插件推荐

    之前一直在用 Code Blocks 这个IDE工具,可用着还是感觉不怎么好,于是在网上找到了一篇文章,上面介绍了不少IDE,我找到了Sublime Text 感觉挺不错的. 帖子地址: http:/ ...

  3. react状态管理器之mobx

    react有几种状态管理器,今天先来整理一下mobx状态管理器,首先了解一下什么是mobx 1.mobx成员: observable action 可以干嘛: MobX 的理念是通过观察者模式对数据做 ...

  4. Spring中ApplicationContextAware接口的用法

    1.为什么使用AppplicationContextAware? ApplicationContext的BeanFactory 的子类, 拥有更强大的功能,ApplicationContext可以在服 ...

  5. 爬虫-urllib模块的使用

    urllib是Python中请求url连接的官方标准库,在Python3中将Python2中的urllib和urllib2整合成了urllib.urllib中一共有四个模块,分别如下: request ...

  6. 基础篇-http协议《http 简介、url详解、request》

    目录 一.http 简介 二.url 详解 三.request 1.get 和 post 2.请求方法 3.request 组成 4.请求头 5.get 请求参数 6.post 请求参数 7.post ...

  7. Github Python计算器开源项目 二次开发--增加函数图形

    先上原项目链接:https://github.com/xhf79/Calculator_pyqt python+Qt 开发的计算器 原项目界面和功能如图所示: 科学计算的内容基本都有,但按照项目的提示 ...

  8. java 利用异或^进行加密

    package com.zcj.eg001; import java.nio.charset.Charset; import org.junit.Test; public class Encrypti ...

  9. Canal:同步mysql增量数据工具,一篇详解核心知识点

    老刘是一名即将找工作的研二学生,写博客一方面是总结大数据开发的知识点,一方面是希望能够帮助伙伴让自学从此不求人.由于老刘是自学大数据开发,博客中肯定会存在一些不足,还希望大家能够批评指正,让我们一起进 ...

  10. MySQL全面瓦解20:可编程性之流程控制语句

    背景 说到流程控制语句,我们在程序语法中用的比较多,比如C#的if..else...,while...,?: 等.同样的,在MySQL中,也有一些流程控制的语法,方便我们在写函数.存储过程的时候对逻辑 ...