51nod1414【思维】

思路:
直接可以枚举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;
}
原文地址:https://www.cnblogs.com/keyboarder-zsq/p/5934747.html