思路:k = (1,2,...,n)所在的位置是ak, bk (ak<bK);故bk - ak = k+1
所以sigma(bk-ak) = n*(n+3)/2;
因为总共的位置就是1到2*n,所以sigma(ak+bk) = (1+2*n)*n
又sigma(ak+bk) = sigma(ak + ak + k + 1) = sigma(2*ak) + sigma(bk-ak) = 2*sigma(ak) + n*(n+3)/2;
由sigma(ak+bk) 的两个等式可以解得:sigma(ak) = n*(3*n-1)/4, sigma(bk) = n*(n+1)/4
因为sigma(ak)和sigma(bk)必为整数,否则就是无解
代码:
#include <stdio.h>
int main() {
int n;
while(~scanf("%d",&n),n) {
if(n%4==0||(3*n-1)%4==0) puts("Y");
else puts("N");
}
return 0;
}