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

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. zoj 3471 Most Powerful(状态压缩dp)

    Recently, researchers on Mars have discovered N powerful atoms. All of them are different. These ato ...

  2. [破解] DRM-内容数据版权加密保护技术学习(上):视频文件打包实现

    1. DRM介绍: DRM,英文全称Digital Rights Management, 可以翻译为:内容数字版权加密保护技术. DRM技术的工作原理是,首先建立数字节目授权中心.编码压缩后的数字节目 ...

  3. SqlServer 数据库日志无法收缩处理过程

    今天按常用方法收缩一个测试用的数据库日志,发现没法收缩! dbcc sqlperf(logspace)     USE [dbname] GO ALTER DATABASE [dbname] SET  ...

  4. eclipse默认编码设置为utf-8

    需要设置的几处地方为: Window->Preferences->General ->Content Type->Text->JSP 最下面设置为UTF-8 Window ...

  5. 用c++语言编写函数 int index(char *s,char * t),返回字符串t在字符串s中出现的最左边的位置,如果s中没有与t匹配的子串,则返回-1。类似于索引的功能。

    首先,分析一下程序的思路: 1:从s的第i个元素开始,与t中的第1个元素匹配,如果相等,则将s的第i+1元素与t中的第2个元素匹配,以此类推,如果t所有元素都匹配,则返回位置i;否则,执行2; 2: ...

  6. struct2-json

    一.JSON是什么? :JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写,同时也易于机器解 析和生成.它基于JavaScript(Stan ...

  7. Cocos2d-X中实现菜单特效

    Cocos2d-X中能够讲菜单和动作结合起来使用实现菜单特效 程序实例1:使用菜单和动作的组合实现菜单特效<一> #include "MenuItem.h" CCSce ...

  8. PHP安装mcrypt.so报错 mcrypt.h not found 的解决办法

    报错内容:configure: error: mcrypt.h not found. Please reinstall libmcrypt 网上搜索了很多,包括自带的 yum install libm ...

  9. linux上大量tcp端口处于TIME_WAIT的问题

    今天发现网站突然无法访问,登陆webserver已经无法连接mysql,转战mysql一看,发现竟然有三千多个TIME_WAIT连接,擦,被SYN攻击了?百度&&google,发现通过 ...

  10. mysql-5.6.27源码安装及错误解决办法

    wget http://mirrors.sohu.com/mysql/MySQL-5.6/mysql-5.6.27.tar.gz yum install -y cmake  当然也可以自己下载源码包安 ...