输入n和内容为0或1的数组
#include<iostream>
using namespace std;
const int N=1e5+7;
int n,a[N];
bool func(int start,int step)//如果每隔相应步数后都为1,则返回ture
{
for(int i=start;i<=n;i=i+step)
{
if(a[i]==0)
return false;
}
return ture;
}
int main( )
{//输入n和数组
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=3;i<=n;i++)
{
//如果n%i不等于0,则一定不会出现正i边形
if(n%i)
continue;
int step=n/i;//如果n=10,i=5,则需要每隔两步一个1才能组成正多边形
for(int start=1;start<=step;start++)
{
if(func(start,step))
{
cout<<"yes"
return 0;
}
}
}
cout<<"no";
return 0;
}