训练的题目

模拟题,蛇形矩阵,保证是n*n的矩阵,并且n是奇数 , 在矩阵中填数,从最中心开始填,逆时针转圈,1,2,3…………n*n。输入n,表示矩阵的大小,输入一个数字m,找出m在矩阵的哪行哪列

其实这个蛇形矩阵可以分为一圈一圈来看,要找m,可以先确定它在哪一圈

每一圈都值的范围是  [ k^2+1 , (k+2)*(k+2) ] ,其中k是奇数

看一圈的四个角,

右上角最大:  max = (k+2)*(k+2)

左上角次之:  max - (k+2) + 1

左下角再次: max - 2*(k+2) + 2

右下角 :     max - 3*(k+2) + 3

所以可以以这4个值作为一个范围,将这个圈分成4份,叫做 上行 ,  左列  ,  下行  ,  右列

这4分里面的数字是连续的,要在里面找一个值,直接扫描即可

代码写得不是很好,后来没修改了

#include <cstdio>
#include <cstring>
#define MAX 32768typedef long long ll;
ll nn[MAX+10];
ll pos,n;void init()
{memset(nn,0,sizeof(nn));for(ll i=1; i<=MAX+6; i+=2)nn[i] = i*i;
}ll search(ll p)
{for(ll i=1; ; i+=2)if(nn[i] < p && p <= nn[i+2])return i;return -1;
}int main()
{init();int T;scanf("%d",&T);while(T--){scanf("%lld%lld",&n,&pos);if(pos == 1){printf("%lld %lld\n",(n+1)/2 , (n+1)/2);continue;}ll m = search(pos);ll max = (m+2)*(m+2);ll q = (m+1)/2;//【 m*m+1 , (m+2)*(m+2) 】//找到在第q圈
ll r , c;ll k;ll temp;if(pos <= max && pos > max-(m+2)+1) //上行
      {r = (n+1)/2 - q;c = (n+1)/2 + q;temp = max;for(k=c; ;k--,temp--)if(temp == pos)break;printf("%lld %lld\n",r,k);}else if(pos <= max-(m+2)+1 && pos > max-2*(m+2)+2 ) //左列
      {c = (n+1)/2 - q;r = (n+1)/2 - q;temp = max-(m+2)+1;for(k=r; ;k++,temp--)if(temp == pos)break;printf("%lld %lld\n",k,c);}else if(pos <= max-2*(m+2)+2 && pos > max-3*(m+2)+3 ) //下行
      {r = (n+1)/2 + q;c = (n+1)/2 - q;temp = max-2*(m+2)+2;for(k=c; ;k++,temp--)if(temp == pos)break;printf("%lld %lld\n",r,k);}else if( pos <= max-3*(m+2)+3 && pos > max-4*(m+2)+4)//右列
      {c = (n+1)/2 + q;r = (n+1)/2 + q;temp = max-3*(m+2)+3;for(k=r; ;k--,temp--)if(temp == pos)break;printf("%lld %lld\n",k,c);}}return 0;
}

Sicily 1694. Spiral相关推荐

  1. LeetCode:Spiral Matrix I II

    Spiral Matrix Given a matrix of m x n elements (m rows, n columns), return all elements of the matri ...

  2. LeetCode 54. Spiral Matrix--Python解法--螺旋排序

    题目地址:Spiral Matrix - LeetCode Given a matrix of m x n elements (m rows, n columns), return all eleme ...

  3. Leetcode: Spiral Matrix

    Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...

  4. Spiral Matrix

    Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...

  5. 旋转遍历矩阵 Spiral Matrix

    为什么80%的码农都做不了架构师?>>>    问题: Given a matrix of m x n elements (m rows, n columns), return al ...

  6. LeetCode 59 Spiral Matrix II(螺旋矩阵II)(Array)

    版权声明:转载请联系本人,感谢配合!本站地址:http://blog.csdn.net/nomasp https://blog.csdn.net/NoMasp/article/details/5214 ...

  7. LeetCode59 Spiral Matrix II

    题目: Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. ...

  8. LeetCode Spiral Matrix II (生成螺旋矩阵)

     Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. F ...

  9. 59. Spiral Matrix II

    /** 59. Spiral Matrix II * 12.5 by Mingyang* 注意,这里我们说的Matrix就是正方形,不再是长方形了,所以我们会用* 更简单的方法,就是直接上下左右分别加 ...

最新文章

  1. DataFrame的copy的用法
  2. 我,AI专家,模型检测COVID-19准确率高达97.5%,约吗
  3. 算法提高课-搜索-最短路模型-AcWing 188. 武士风度的牛 :bfs、dist数组记录最小步数
  4. 一条命令教你安装centos下面的pip服务
  5. Entityframework批量删除
  6. 图片鉴黄大赛上线,请开始你的表演
  7. 泰山JDK8升级u302,找到了更好的整合mips办法
  8. SPSS T检验(图文+数据集)【SPSS 017期】
  9. Google Colab使用笔记
  10. 桥接命令brctl的用法
  11. matlab 中norm函数的用法
  12. DBSCAN聚类算法
  13. html在下划线上加文本框,在word文本框中如何添加下划线
  14. 目前有哪些好用的测试管理工具?
  15. uni-app H5+ 连接蓝牙打印机打印文字及二维码
  16. linux是微内核还是宏内核,微内核与宏内核比较
  17. Photoshop 2023 Mac(PS 2023)v24.0.0中英文已发布,新功能详细介绍,支持M1/M2/intel
  18. .Net 优秀的开源框架整理
  19. 制售《原神》外挂非法获利200万,外挂的危害有多大?
  20. 群晖wordpress如何连接mysql,「全网首发」群晖wordpress二级目录下实现IP加端口访问教程...

热门文章

  1. SLAM学习--2D激光SLAM-圣经-概率机器人学各种扩展
  2. static关键字的使用
  3. Debug下正常,而Release失败的真正原因
  4. css基础选择器教程,CSS核心基础 一些常见的选择器的使用 小白教程
  5. ubuntu 上网总结
  6. Python 网络爬虫笔记1 -- Requests库
  7. C++ 标准库类型 set
  8. 范式青春er,寻找同行的你!
  9. erlang精要(1)-四则算术运算
  10. AI理论知识整理(15)-行列式