#P1644. 根据矩阵的行列位置计算矩阵元素的值.8.填空题

根据矩阵的行列位置计算矩阵元素的值.8.填空题

问题描述

有数字矩阵,共 n 行 m 列,其赋值的顺序如下图所示,先赋值右方的列再赋值左方的列;最后 1 列是从上往下赋值,倒数第 2 列是从下往上赋值,倒数第 3 列是从上往下赋值 ......

img

下面是 4 行 5 列的矩阵的样子:

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

问 :第 i 行 第 j 列的数字是什么?

思维路径

  1. 按照赋值的顺序,在赋值第 i 行第 j 列这个格子之前已经完整赋值了 {{ input(1) }} 列。

  2. 按照赋值的顺序,第 j 列是第{{ input(2) }}列,如果这个数字是奇数,结合列内的赋值顺序,第 i 行第 j 列是该列的是第 {{ input(3) }} 个格子;如果这个数字是偶数,则第 i 行第 j 列是该列的是第 {{ input(4) }} 个格子。

  3. 因此,如果 {{ input(5) }} 是奇数,则第 i 行第 j 列的数字是整个矩阵的第 {{ input(6) }} 个数字,否则,该格子的数字是整个矩阵的第 {{ input(7) }} 个数字。

实战训练

  1. n = 157 , m = 79 , 第 101 行 ,第 56 列的数字是:{{ input(8) }}

  2. n = 997 , m = 999 , 第 934 行 ,第 379 列的数字是:{{ input(9) }}

程序填空

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int n,m,i,j;

	cin>>n>>m;

	cin>>i>>j; 

	if(( 填空(1) )%2==1)
		cout<< 填空(2);
	else
		cout<<填空(3);

	return 0;
}

填空(1): {{ input(10) }}

填空(2): {{ input(11) }}

填空(3): {{ input(12) }}