CF 71C. Round Table Knights

题目链接

很多小的细节都没想到。。。

 1 #include <cstdio>

 2 #include <cstring>

 3 #include <iostream>

 4 #include <vector>

 5 using namespace std;

 6 int p[100001];

 7 int o[100001];

 8 int main()

 9 {

10     int n,i,flag = 1,j;

11     scanf("%d",&n);

12     for(i = 0;i < n;i ++)

13     {

14         scanf("%d",&p[i]);

15         if(p[i] == 0)

16         flag = 0;

17     }

18     if(flag)

19     {

20         printf("YES\n");

21         return 0;

22     }

23     if(n%2 == 0&&n > 4)

24     {

25         memset(o,0,sizeof(o));

26         for(i = 0;i < n;i ++)

27         {

28             o[i%2] += p[i];

29         }

30         if(o[0] == n/2||o[1] == n/2)

31         {

32             printf("YES\n");

33             return 0;

34         }

35     }

36     for(i = 3;i*i <= n;i ++)

37     {

38         if(n%i == 0)

39         {

40             int mod;

41             memset(o,0,sizeof(o));

42             mod = n/i;

43             for(j = 0;j < n;j ++)

44             {

45                 o[j%mod] += p[j];

46             }

47             for(j = 0;j < mod;j ++)

48             {

49                 if(o[j] == i)

50                 {

51                     printf("YES\n");

52                     return 0;

53                 }

54             }

55             memset(o,0,sizeof(o));

56             mod = i;

57             for(j = 0;j < n;j ++)

58             {

59                 o[j%mod] += p[j];

60             }

61             for(j = 0;j < mod;j ++)

62             {

63                 if(o[j] == n/i)

64                 {

65                     printf("YES\n");

66                     return 0;

67                 }

68             }

69         }

70     }

71     printf("NO\n");

72     return 0;

73 }

 

你可能感兴趣的:(table)