当前位置: 首页 > article >正文

P2239 [NOIP2014 普及组] 螺旋矩阵 题解

文章目录

    • 题目描述
    • 输入格式
    • 输出格式
    • 样例
      • 样例输入
      • 样例输出
    • 数据范围与提示
    • 完整代码

题目描述

一个 n n n 行 $ n$ 列的螺旋矩阵可由如下方法生成:

从矩阵的左上角(第 1 1 1 行第 1 1 1 列)出发,初始时向右移动;如果前方是未曾经过的格子,则继续前进,否则右转;重复上述操作直至经过矩阵中所有格子。根据经过顺序,在格子中依次填入 1 , 2 , 3 , . . . , n 2 1, 2, 3, ... , n^2 1,2,3,...,n2,便构成了一个螺旋矩阵。

下图是一个 n = 4 n = 4 n=4 时的螺旋矩阵。

( 1 2 3 4 12 13 14 5 11 16 15 6 10 9 8 7 ) \begin{pmatrix} 1 & 2 & 3 & 4 \\ 12 & 13 & 14 & 5 \\ 11 & 16 & 15 & 6 \\ 10 & 9 & 8 & 7 \\ \end{pmatrix} 11211102131693141584567

现给出矩阵大小 n n n 以及 i i i j j j,请你求出该矩阵中第 i i i 行第 j j j 列的数是多少。

输入格式

共一行,包含三个整数 n n n, i i i, j j j,每两个整数之间用一个空格隔开,分别表示矩阵大小、待求的数所在的行号和列号。

输出格式

一个整数,表示相应矩阵中第 i i i 行第 j j j 列的数。

样例

样例输入

4 2 3

样例输出

14

数据范围与提示

对于 50 % 50\% 50% 的数据, 1 ⩽ n ⩽ 100 1 \leqslant n \leqslant 100 1n100;

对于 100 % 100\% 100% 的数据, 1 ⩽ n ⩽ 30 , 000 , 1 ⩽ i ⩽ n , 1 ⩽ j ⩽ n 1 \leqslant n \leqslant 30,000,1 \leqslant i \leqslant n,1 \leqslant j \leqslant n 1n30,000,1in,1jn

【题目来源】NOIP 2014 普及组 T3

完整代码

#include<bits/stdc++.h>
using namespace std;
int main()
{
	//高级的食材往往只需要最简单的烹饪方式。
	int n,i,j,minn,ans;
	scanf("%d%d%d",&n,&i,&j);
	minn=min(i,min(j,min(n-i+1,n-j+1)));
    if(i<=j) printf("%d",minn*(4*(n-1)-4*minn)+10*minn-4*n-3+i+j);
    else printf("%d",minn*(4*n-4*minn)+(minn<<1)+1-i-j);
	return 0;
}

http://www.kler.cn/a/132729.html

相关文章:

  • 2024年11月16日 星期六 重新整理Go技术
  • Go语言24小时极速学习教程(二)复合数据(集合)操作
  • vueRouter路由切换时实现页面子元素动画效果, 左右两侧滑入滑出效果
  • 正则表达式语法详解(python)
  • 快排和归并
  • 基于Python空气质量可视化及预测
  • 机器学习和深度学习领域的算法和模型
  • Java中的集合内容总结——Collection接口
  • 灰度图处理方法
  • WPF异步编程
  • 手动编译GDB
  • 使用CXF调用WSDL(二)
  • ascii 码对照表
  • LeetCode704.二分查找及二分法
  • Filter和ThreadLocal结合存储用户id信息
  • 傅里叶分析(2)
  • elementui 实现树形控件单选
  • 哈希
  • 解决Redis分布式锁宕机出现不可靠问题-zookeeper分布式锁
  • kubernetes|云原生| 如何优雅的重启和更新pod---pod生命周期管理实务
  • QGIS003:【05高级数字化工具栏】-要素移动、修改、合并操作
  • Hadoop学习总结(MapRdeuce的词频统计)
  • 【原创】java+swing+mysql鲜花购物商城设计与实现
  • ATTCK实战系列——红队实战(一)
  • Alibaba Nacos注册中心源码剖析
  • 6.6.比例尺图层(ScaleBarOverlay)