题意:
设f(x)=(x+1)*x/2mod(n),问f(x)是否可以构成n的一个完全剩余系。
分析:
网上很多证明一开始就说f(x)的周期为n,这是不对的。当n是奇数时f(x)周期T=n,当n为偶数时T=2*n,f(x+n)=f(x)+n/2。依据这3个性质可推出f(x)可以构成n的一个完全剩余系的充要条件是n是2的正整数数幂。
代码:
//poj 3372
//sep9
#include <iostream>
using namespace std;int main()
{int n;while(scanf("%d",&n)==1){puts((n&(n-1))?"NO":"YES");} return 0;
}