思路:
直接可以枚举1-n,如果枚举到是n的约数i,那么暴力枚举起点,其余点用i累加就一定是正多边形。复杂度是(n*n的公约数个数(最多80));
const int N=2e4+10;
int a[N];
int main()
{
int n;
int ans=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
ans+=a[i];
}
for(int i=2;i<=n/3;i++)
{
if(n%i==0)
{
for(int j=1;j<=i;j++)
{
int res=0;
for(int k=j;k<=n;k+=i)
{
res+=a[k];
}
ans=max(ans,res);
}
}
}
printf("%d
",ans);
return 0;
}