Descripción del problema
Como se muestra en la figura siguiente, Xiaoming llena una matriz infinita con una "forma de serpiente" de enteros positivos a partir de 1.
Es fácil ver que el número en la segunda fila y la segunda columna de la matriz es 5. ¿Podría calcular el número en la fila 20 y la columna 20 de la matriz?
Envío de respuesta
Esta es una pregunta que llena los espacios en blanco con el resultado, solo necesitas calcular el resultado y enviarlo.
El resultado de esta pregunta es un número entero. Al enviar la respuesta, solo complete este número entero. Si completa el contenido adicional, no podrá puntuar.
Respuesta: 761
Problema solución uno
Encuentre la ley:
解题思路
: Los números en la diagonal son 1, 5, 13, 25 ...
#include <iostream>
using namespace std;
int main()
{
int w = 4, ans = 1;
for (int i = 1; i <= 19; i ++)
{
ans += w;
w += 4;
}
cout << ans << endl;
return 0;
}
Problema solución dos
Encuentre la ley:
解题思路
:
- El comienzo de la primera capa es 1, las coordenadas son
(1, 1)
y la suma de las filas y columnas es 2; - El comienzo de la segunda capa es 2, las coordenadas son
(2, 1)
y la suma de las filas y columnas es 3; - El comienzo de la tercera capa es 4, las coordenadas son
(3, 1)
y la suma de las filas y columnas es 4; - El comienzo de la cuarta capa es 7, las coordenadas son
(1, 4)
y la suma de las filas y columnas es 5;
#include <cstdio>
#include <iostream>
using namespace std;
int g[40][40];
int main()
{
int k = 1;
for (int i = 2; i <= 40; i ++) // 枚举行列之和
if(i % 2 == 0)
{
for (int j = 1; j < i; j ++) // 奇数层:从下到上
g[j][i - j] = k ++;
}
else
{
for (int j = i - 1; j >= 1; j --) // 偶数层:从上到下
g[j][i - j] = k ++;
}
for (int i = 1; i <= 20; i ++)
{
for (int j = 1; j <= 20; j ++) printf("%4d", g[i][j]);
cout << endl;
}
return 0;
}
Copa Lanqiao C / C ++ Grupo Competencia provincial Preguntas de años anteriores