【算法】Partitioning the Array(数论)

news2024/11/24 10:17:47

题目

Allen has an array a1,a2,…,an. For every positive integer k that is a divisor of n, Allen does the following:

  • He partitions the array into n/k disjoint subarrays of length k. In other words, he partitions the array into the following subarrays:

    [a1,a2,…,ak],[ak+1,ak+2,…,a2k],…,[an−k+1,an−k+2,…,an]

  • Allen earns one point if there exists some positive integer m (m≥2) such that if he replaces every element in the array with its remainder when divided by m, then all subarrays will be identical.

Help Allen find the number of points he will earn.

================================================================

Allen 有一个数组 a1,a2,…,an。对于每一个能被 n 整除的正整数 k,艾伦都会做如下运算:

  • 他将数组划分为长度为 k 的 n/k 个互不相交的子数组:

    [a1,a2,…,ak],[ak+1,ak+2,…,a2k],…,[an−k+1,an−k+2,…,an]

  • 如果存在某个正整数 m (m≥2),使得如果他把数组中的每个元素都替换成除以 m 后的余数,那么所有的子数组都是相同的,Allen 就可以得到一分。

帮助艾伦找出他将获得的分数。

Input

Each test consists of multiple test cases. The first line contains a single integer t (1≤t≤104) — the number of test cases. The description of the test cases follows.

The first line of each test case contains a single integer n (1≤n≤2⋅10^5) — the length of the array a.

The second line of each test case contains n integers a1,a2,…,an (1≤ai≤n) — the elements of the array a.

It is guaranteed that the sum of n over all test cases does not exceed 2⋅105.

输入

每个测试由多个测试用例组成。第一行包含一个整数 t(1≤t≤104)–测试用例数。测试用例说明如下。

每个测试用例的第一行包含一个整数 n(1≤n≤2⋅105)–数组 a 的长度。

每个测试用例的第二行包含 n 个整数 a1,a2,…,an(1≤ai≤n)–数组 a 的元素。

保证所有测试用例中 n 的总和不超过 2⋅10^5。

Output

For each test case, output a single integer — the number of points Allen will earn.

输出

对于每个测试用例,输出一个整数 - 艾伦将获得的分数。

思路

本题用到一个概念:如果m为|x-y|的因数,则x % m == y % m.
将数组划分为长度相等的 i 段,将所有的数全部模m之后,所有数组相同。例如当m = 1的时候每个数组中的数均为0,(当然题目中要求m != 0,这里只是做个假设)可以得到一分。
若 n % k == 0,将数组分成了k段
则原数组中m 必须为 abs(h[ i ] - h[ i + k])的因数.

在这里插入图片描述

代码

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
int n;
int h[N];

int gcd(int a, int b)  // 欧几里得算法
{
    return b ? gcd(b, a % b) : a;
}


void solve()
{
    cin >> n;
    int ans = 0;
    for(int i = 1; i <= n; i ++) cin >> h[i];
    for(int i = 1; i <= n; i ++)
    {
        if(n % i == 0)
        {
            int m = 0;
            for(int k = 1; k + i <= n; k ++)
            {
                m = gcd(m,abs(h[i + k] - h[k]));
            }
            ans += (m != 1);
        }
    }
    cout << ans << endl;
}

int main()
{
    int t;
    cin >> t;
    while(t --)
        solve();
    return 0;
}

题目来自:Partitioning the Array

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1425230.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何将Mac连接到以太网?这里有详细步骤

在Wi-Fi成为最流行、最简单的互联网连接方式之前&#xff0c;每台Mac和电脑都使用以太网电缆连接。这是Mac可用端口的标准功能。 如何将Mac连接到以太网 如果你的Mac有以太网端口&#xff0c;则需要以太网电缆&#xff1a; 1、将电缆一端接入互联网端口&#xff08;可以在墙…

A+CLUB管理人支持计划第十一期 | 巨量均衡

免责声明 本文内容仅对合格投资者开放&#xff01; 私募基金的合格投资者是指具备相应风险识别能力和风险承担能力&#xff0c;投资于单只私募基金的金额不低于100 万元且符合下列相关标准的单位和个人&#xff1a; &#xff08;一&#xff09;净资产不低于1000 万元的单位&a…

Flink 1.18.1 部署与配置 [CentOS7]

静态IP设置 # 修改网卡配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33# 修改文件内容 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic IPADDR192.168.18.128 NETMASK255.255.255.0 GATEWAY192.168.18.2 DEFROUTEyes IPV4_FAILURE_FATALno IPV6INIT…

电源模块测试之电源开关机过冲测试方法

开关机过冲是指在电源在开机和关机过程中出现的瞬间电压过高或过低的现象&#xff0c;过冲过大容易损坏电源和设备。因此需要进行开关机过冲测试&#xff0c;观察在开机或关机过程中的电压波动情况&#xff0c;评估电源的在开关机时的性能。 电源开关机过冲的测试条件和测试标准…

Python处理图片生成天际线(2024.1.29)

1、天际线简介 天际线&#xff08;SkyLine&#xff09;顾名思义就是天空与地面的边界线&#xff0c;人站在不同的高度&#xff0c;会看到不同的景色和地平线&#xff0c;天空与地面建筑物分离的标记线&#xff0c;不得不说&#xff0c;每天抬头仰望天空&#xff0c;相信大家都可…

四、CPU架构介绍和分类

中央处理器&#xff08;central processing unit&#xff0c;简称CPU&#xff09;作为计算机系统的运算和控制核心&#xff0c;是信息处理、程序运行的最终执行单元 1、CPU架构 CPU架构是CPU厂商给属于同一系列的CPU产品定的一个制作规范&#xff0c;主要目的是为了作为区分不同…

最近宣布的NIST后量子密码学标准的3个关键要点

当今世界依赖于许多保护措施&#xff0c;即使您没有注意到这一点。从手机和智能技术到网站&#xff0c;从支付交易到城市基础设施&#xff0c;人们经常与之互动的一切&#xff0c;都通过保护和检查技术来保护。量子计算机能够快速轻松地打破这些保护措施&#xff0c;这是政府和…

Linux, Certbot快速申请免费https证书

linux环境. 更新apt,为了能正确的下载certbot apt update 安装certbot apt install certbot 如果之前nginx已经开启着了,先关掉,防止端口占用 nginx -s stop 运行certbot开始获取证书文件 certbot certonly 输入1直接回车,意思就是让certbot模拟一个web服务器执行下面的…

计算机设计大赛 深度学习 python opencv 实现人脸年龄性别识别

文章目录 0 前言1 项目课题介绍2 关键技术2.1 卷积神经网络2.2 卷积层2.3 池化层2.4 激活函数&#xff1a;2.5 全连接层 3 使用tensorflow中keras模块实现卷积神经网络4 Keras介绍4.1 Keras深度学习模型4.2 Keras中重要的预定义对象4.3 Keras的网络层构造 5 数据集处理训练5.1 …

社交营销巨手:HubSpot的数字推广策略揭密

在数字化的浪潮中&#xff0c;HubSpot作为领先的数字营销平台&#xff0c;一直在积极探索并应用各种关键策略&#xff0c;特别是在主流社交媒体平台上。今天&#xff0c;我们将深入解析HubSpot在数字推广中的关键策略&#xff0c;重点聚焦于其在社交媒体上的运用&#xff0c;以…

python-自动化篇-运维-可视化-绘图库-matplotlib

文章目录 Matplotlibmatplotlib开发环境搭建绘制基础绘制直线绘制折线设置标签文字和线条粗细绘制一元二次方程的曲线yx^2绘制正弦曲线和余弦曲线散点图绘制柱状图绘制饼状图绘制直方图等高线图绘制三维图 Matplotlib Matplotlib 是一个Python的 2D绘图库。通过 Matplotlib&am…

幻兽帕鲁服务器怎么收费?4核16G配置

幻兽帕鲁服务器价格多少钱&#xff1f;4核16G服务器Palworld官方推荐配置&#xff0c;阿里云4核16G服务器32元1个月、96元3个月&#xff0c;腾讯云换手帕服务器服务器4核16G14M带宽66元一个月、277元3个月&#xff0c;8核32G22M配置115元1个月、345元3个月&#xff0c;16核64G3…

redis源码之:redis-cli 集群命令

在集群命令执行前&#xff0c;需要先按上一章节的方式redis源码之&#xff1a;clion搭建cluster环境&#xff0c;启动四个新的redis节点&#xff0c;但不要执行cluster create命令&#xff0c;保持四个节点独立。 redis-cli的命令执行大抵流程差不多&#xff0c;下面以redis-c…

【EI会议征稿中|ACM出版】#先投稿,先送审#第三届网络安全、人工智能与数字经济国际学术会议(CSAIDE 2024)​

#先投稿&#xff0c;先送审#ACM出版#第三届网络安全、人工智能与数字经济国际学术会议&#xff08;CSAIDE 2024&#xff09; 2024 3rd International Conference on Cyber Security, Artificial Intelligence and Digital Economy 2024年3月8日-10日 | 中国济南 会议官网&…

闲人闲谈PS之五十三——离散制造中的魔鬼--物料套裁

惯例闲话&#xff1a;最近和老婆大人商议买车事宜&#xff0c;闲人以为会陷入买油车还是电车的纠结&#xff0c;没想到老婆大人无比坚定&#xff0c;买电车。在买车这方面&#xff0c;老婆的想法居然比闲人超前。闲人对车定位在代步工具&#xff0c;2年前&#xff0c;对车还是印…

【深入浅出SpringCloud原理及实战】「Netflix系列之Hystrix」针对于限流熔断组件Hystrix的回退降级实现方案和机制

针对于限流熔断组件Hystrix的回退降级实现方案和机制 依赖隔离依赖隔离之线程&线程池高延迟请求的例子 线程池的优势线程池的弊端线程池的开销线程池开销 信号量 依赖隔离 Hystrix通过使用『舱壁模式』&#xff08;注&#xff1a;将船的底部划分成一个个的舱室&#xff0c;…

基于单片机温度控制系统的研究

摘 要&#xff1a;笔者基于单片机的温度控制系统&#xff0c;从单片机选择、传感器选择、系统框架设计等方面概述了单片机的温度控制系统内涵&#xff0c;分析了其运行原理&#xff0c;列举了单片机温度控制系统设计的实操方法&#xff0c;从硬件系统、软件系统、温度检测方法…

极简网络邻区自动化操作流程指导手册

一、创建任务 1、策略配置&#xff1a;首先按配置内容进行个性化策略配置 2、任务创建&#xff1a;在专题分析->极简网络分析->极简网络配置任务管理下点击创建任务&#xff0c;具体内容如下填写&#xff1a; 目前策略配置一般配置为城区场景和农村场景&#xff0c;各地…

IS-IS的LSP分片扩展

原理 IS-IS通过泛洪LSP来宣告链路状态信息,由于一个LSP能够承载的信息量有限,IS-IS将对LSP进行分片。每个LSP分片由产生该LSP的结点或伪结点的SystemID、PseudnodeID(普通LSP中该值为0,Pseudonode LSP中该值为非0)、LSPNumber(LSP分片号)组合起来唯一标识,由于LSPNumb…

Google Play上架:因行为透明度被拒审或下架的政策自查(基于区块链的内容)

近期很多朋友的项目出现因行为透明度问题被谷歌拒审或者已经上架的包被下架甚至封号,今天解释一下为什么会被封号下架,根据是什么? 目录 政策发布时间与截止时间政策内容政策背景政策解析和问题讲解政策发布时间与截止时间 基于区块链的内容相关政策,于2023-07-12 公布,…