1 条题解
-
0
#include<stdio.h> int main() { int n,m; scanf("%d",&n); int arr[n+9]={0}; arr[1]=1; int l=1; for(int i=2;i<=2*n;i++) { l+=i; arr[l%n]=1; l%=n; } //模拟做题,1 2 3 4····;是等差数列和为((x+1)*x)/2;可以发现当x多于n时这个n其实没有作用 因为n步是绕一圈没有影响所以找到n的倍数步就行而我们发现当x=2*n时,和为n(2*n+1)正好是整数圈所以情况已经全部包含了, 所有遍历到2*n步就可以结束了。 m=0; for(int i=0;i<n;i++) { if(arr[i]==0){ m=1; break; } } if(m==0) { printf("YES"); } else { printf("NO"); } return 0;}
- 1
信息
- ID
- 289
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 8
- 标签
- (无)
- 递交数
- 533
- 已通过
- 72
- 上传者