Acwing 暑假每日一题——. 正方形数组的数目

给定一个非负整数数组,如果每对相邻元素之和是一个完全平方数,就称为正方形数组。该程序计算数组的不同正方形排列数量。输入包含数组长度和数组元素,输出是正方形排列的数目。示例中,长度为3的数组有2种正方形排列。题目来源于上海交通大学考研机试题,难度简单。
摘要由CSDN通过智能技术生成

给定一个非负整数数组 AA,如果该数组每对相邻元素之和是一个完全平方数,则称这一数组为正方形数组。

返回 AA 的正方形排列的数目。

两个排列 A1A1 和 A2A2 不同的充要条件是存在某个索引 ii,使得 A1[i]≠A2[i]A1[i]≠A2[i]。

输入格式

第一行包含一个整数 nn,表示数组 AA 的长度。

第二行包含 nn 个整数 A[i]A[i]。

输出格式

一个整数,表示 AA 的正方形排列的数目。

数据范围

1≤n≤121≤n≤12,
0≤A[i]≤1090≤A[i]≤109。

输入样例:

3
1 17 8

输出样例:

2

样例解释

[1,8,17][1,8,17] 和 [17,8,1][17,8,1] 都是有效的排列。

难度:简单
时/空限制:1s / 64MB
总通过数:542
总尝试数:1642
来源:上海交通大学考研机试题
算法标签

挑战模式

/*Where there is light, in my heart.*/
/*SUMMER_TRAINING DAY 17*/
#include<bits/stdc++.h>
#include <iostream>
#include <cstring>
#include <queue&
数组挑战通常是指一系列涉及数组操作的编程问题,而图像旋转则是常见的数组操作之一。在编程中,图像旋转通常指的是将图像矩阵按照某个中心点或边缘进行旋转,常见的有90度、180度、270度等旋转。这里我们以90度顺时针旋转为例进行介绍。 假设我们有一个n x n的二维数组,代表图像的像素矩阵,我们需要将这个矩阵顺时针旋转90度。为了实现这一目标,我们可以使用一个简单的转置加行翻转的方法。转置意味着矩阵的行列互换,而行翻转则意味着将矩阵的每一行从左到右反过来。 以下是实现90度顺时针旋转图像的步骤: 1. 对矩阵进行转置。即将矩阵中的元素matrix[i][j]变成matrix[j][i]。 2. 对转置后的矩阵的每一行进行翻转。 下面是一个简单的Python代码示例,实现上述步骤: ```python def rotate(matrix): n = len(matrix) # Transpose the matrix for i in range(n): for j in range(i, n): matrix[i][j], matrix[j][i] = matrix[j][i], matrix[i][j] # Flip each row of the transposed matrix for i in range(n): matrix[i].reverse() return matrix # 示例矩阵 matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] # 旋转90度 rotate(matrix) # 输出旋转后的矩阵 for row in matrix: print(row) ``` 这段代码会输出旋转后的矩阵: ``` [7, 4, 1] [8, 5, 2] [9, 6, 3] ``` 请注意,上述代码针对的是一个正方形矩阵,即行列数相等的情况。如果矩阵不是正方形,那么需要额外的处理来适应不同长度的行和列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值