题目给出如下表的一个矩阵: (红字表示行数或列数)

25 24 23 22 21 5
10 11 12 13 20
9 8 7 14 19 3
2 3 6 15 18 2
1 4 5 16 17 1
1 2 3 4 5

如表格,矩阵是从1开始盘曲的,排放规律不是很难找。

题目要求算出某个数的坐标,数据范围2*10^9,很明显不能用模拟的,这题是纯数学题,找规律题。

我们把矩阵拆开来看,每次进入上一层都会方向反转,每一层拆出来看就是:

25	24	23	22 	21 	20	19 	18 	17
10 11 12 13 14 15 16
9 8 7 6 5
2 3 4
1

这样一个三角形,把坐标也写进去就是:

(第一次发现编辑器如此蛋疼。。。制表格老是错乱!)

下面贴了图片了。

25		24 		23 		22 		21 		20		19 		18 		17 	第5层
1.5 2.5 3.5 4.5 5.5 5.4 5.3 5.2 5.1 10 11 12 13 14 15 16 第4层
1.4 2.4 3.4 4.4 4.3 4.2 4.1 9 8 7 6 5 第3层
1.3 2.3 3.3 3.2 3.1 2 3 4 第2层
1.2 2.2 2.1 1 第1层
1.1

很快就能发现中间那个数都是在(n,n),然后向左向右都有规律的变化。

只要把这个规律描述出来就行了,注意层数的奇偶不同变化规律也会有所不同。

具体见代码:

#include <cstdio>
#include <cmath>
using namespace std; int main() {
long long n;
while (scanf("%lld", &n) && n) {
long long k = ceil(sqrt(n));
if (k % 2 == 0) {
if (k * k - n + 1 < n - (k - 1) * (k - 1))
printf("%lld %lld\n", k, k * k - n + 1);
else
printf("%lld %lld\n", n - (k - 1) * (k - 1), k);
}
else {
if (k * k - n + 1 < n - (k - 1) * (k - 1))
printf("%lld %lld\n", k * k - n + 1, k);
else
printf("%lld %lld\n", k, n - (k - 1) * (k - 1));
}
}
return 0;
}

uva 10161 Ant on a Chessboard 蛇形矩阵 简单数学题的更多相关文章

  1. UVa 10161 Ant on a Chessboard

    一道数学水题,找找规律. 首先要判断给的数在第几层,比如说在第n层.然后判断(n * n - n + 1)(其坐标也就是(n,n)) 之间的关系. 还要注意n的奇偶.  Problem A.Ant o ...

  2. 10161 - Ant on a Chessboard

    Problem A.Ant on a Chessboard Background One day, an ant called Alice came to an M*M chessboard. She ...

  3. Uva10161 Ant on a Chessboard

    Uva10161 Ant on a Chessboard 10161 Ant on a Chessboard One day, an ant called Alice came to an M*M c ...

  4. js实现蛇形矩阵

    参加腾讯前端实习生笔试,真的是被虐了千百遍,除了一条js程序题,其他半点前端都没有,都是考算法,计算机原理,数据结构.下面贴上腾讯笔试最后三大条中的一条,实现一个蛇形矩阵的输出.蛇形矩阵的什么样这里我 ...

  5. 【面试】输出"蛇形"矩阵

    一.题目描述 腾讯实习在线笔试的一道题目. 根据输入的数字(< 1000),输出这样的"蛇形"矩阵,如下.输入n,输出(n * n)阶矩阵,满足由外到内依次增大. 如: 输入 ...

  6. c++实现蛇形矩阵总结

    蛇形矩阵,百度了一下,是这么一个东西: 像一条蛇一样依次递增. 我想,竟然做了螺旋矩阵,那做一下这个吧.在之前的螺旋矩阵的main函数基础上,写个函数接口就行了,这一次做的很快,但是这个矩阵感觉比螺旋 ...

  7. wikioi 1160 蛇形矩阵

    /*======================================================================== 1160 蛇形矩阵 题目描述 Descriptio ...

  8. EOJ3536 求蛇形矩阵每一行的和---找规律

    题目链接: https://acm.ecnu.edu.cn/problem/3536/ 题目大意: 求蛇形矩阵的每一行的和,数据范围n<=200000. 思路: 由于n数据较大,所以感觉应该是需 ...

  9. Java编码 蛇形矩阵的构建与遍历输出

    一.蛇形矩阵的构建,并按行输出 例: 输入:n, 生成n*n的蛇形矩阵 1 2 3 8 9 4 7 6 5 输出:1 2 3 8 9 4 7 6 5 java编码 public static void ...

随机推荐

  1. [转]Activemq管理和基本介绍

    1.ActiveMQ服务器工作模型       通过ActiveMQ消息服务交换消息.消息生产者将消息发送至消息服务,消息消费者则从消息服务接收这些消息.这些消息传送操作是使用一组实现 ActiveM ...

  2. HDU-1016-素数环

    /* 将1-n个数放在环中,保证相邻的两个数的和是素数 第一个数字永远是1 就这两个约束条件 第一个难点是计算素数: 参考文献: http://c.biancheng.net/cpp/html/254 ...

  3. UP UP UP!(dp)

    UP UP UP! Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 92  Solved: 27SubmitStatusWeb Board Descri ...

  4. C,C#,C++中&&和||,&和|的联系和区别

    本文来自:http://www.cnblogs.com/GT_Andy/archive/2010/03/30/1921805.html 两者计算结果相同(针对各自的运算对象),只是性能上有差别而已. ...

  5. 网页被Chrome识别成英语,区域,语言,网站

    修改成这个后解决 <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" ...

  6. c语言中的经典算法

    c语言经典排序以及查找方法 冒泡排序 #include <stdio.h> int main() { int i, j, t, a[11]; /*定义变量及数组为基本整型*/ printf ...

  7. CMD下修改IP地址

    @echo off netsh interface ip set address name="本地连接" static 192.168.1.55 255.255.255.0 192 ...

  8. RTMP流媒体播放过程(转)

    http://blog.csdn.net/leixiaohua1020/article/details/11704355 本文描述了从打开一个RTMP流媒体到视音频数据开始播放的全过程. 注意:RTM ...

  9. 池化 - Apache Commons Pool

    对于那些创建耗时较长,或者资源占用较多的对象,比如网络连接,线程之类的资源,通常使用池化来管理这些对象,从而达到提高性能的目的.比如数据库连接池(c3p0, dbcp), java的线程池 Execu ...

  10. HDU 1055 - Color a Tree

    一棵树,结点树为n,根结点为r.每个结点都有一个权值ci,开始时间为0,每染色一个结点需要耗时1,每个结点的染色代价为ci*ti(ti为当前的时间),每个结点只有在父结点已经被染色的条件下才能被染色. ...