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


正文

题意

一个 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. SQL语句实现增删改查

    查询语句SELECT *FROM mydriect WHERE id=1; 删除语句DELETE FROM mydriect WHERE id=1; 修改语句UPDATE mydriect SET 自 ...

  2. Java学习日报7.21

    package leap;import java.util.Scanner;public class Leap {public static void main(String args[]) { in ...

  3. reactor模式前序:传统IO的WEB服务器设计

    先看一段经典的WEB JAVA服务器设计 JAVA代码为(伪代码) 1 ServerSocket serverSocket = ...; 2 serverSocket.bind(8899); 3 4 ...

  4. 二本非科班,秋招,实习,面试,offer之路

    不知不觉已经工作一年多的,我是2019年7月毕业的,但是如果算上实习就工作差不多两年了的吧. 最近不是刚刚过了圣诞节吗?然后又准备到元旦了,迎来2021年!在微信公众号上看到小部分公众号在总结2020 ...

  5. css浅谈

    一 CSS文字属性: color : #999999; /*文字颜色*/ font-family : 宋体,sans-serif; /*文字字体*/ font-size : 9pt; /*文字大小*/ ...

  6. [从源码学设计]蚂蚁金服SOFARegistry之服务上线

    [从源码学设计]蚂蚁金服SOFARegistry之服务上线 目录 [从源码学设计]蚂蚁金服SOFARegistry之服务上线 0x00 摘要 0x01 业务领域 1.1 应用场景 1.1.1 服务发布 ...

  7. Kafka知识总结及面试题

    目录 概念 Kafka基础概念 命令行 Kafka 数据存储设计 kafka在zookeeper中存储结构 生产者 生产者设计 消费者 消费者设计 面试题 kafka设计 请说明什么是Apache K ...

  8. Hive数据导入Hbase

    方案一:Hive关联HBase表方式 适用场景:数据量不大4T以下(走hbase的api导入数据) 一.hbase表不存在的情况 创建hive表hive_hbase_table映射hbase表hbas ...

  9. 讲讲Java8的Optional类

    前言 Java 8中引入了 Optional 类来解决 NullPointerException 与繁琐的 null 检查,该类首次出现在 Guava.Java 8 才成为类库中的一部分. 入门 Op ...

  10. Ubuntu_Gedit配置

    Ubuntu_Gedit配置 为了换Ubuntu的时候能够更加方便,不用再用手重新打一遍代码,丢几个Gedit配置-- External Tools gdb compile (F2) #!/bin/s ...