http://poj.org/problem?id=3372
题意就是判断是否存在完全剩余系,即有个函数f(x) = x * (x + 1) / 2, 判断从0~n-1是否存在a, b (a!=b), 使f(a) == f(b) (mod n), 若不存在则yes,否则no。
通过化简f(a) == f(b) (mod n)可以得到(a + b + 1) * (a - b) / 2 == k * n.
做到这里我就懵逼了,此时应打表
详细证明见https://blog.csdn.net/V5ZSQ/article/details/47658021
最后据目测可得n为2的幂
#include<cstdio>
int main(){
int n;
while(scanf("%d", &n) != EOF){
bool flag = true;
while(n > 1){
if(n & 1){flag = false; break;}
n >>= 1;
}
printf(flag ? "YES\n" : "NO\n");
}
return 0;
}