BZOJ 1429 方程的解

来源:互联网 发布:巨人网络有多少种游戏 编辑:程序博客网 时间:2024/04/29 13:20

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1429

题意:
F(x)=xi=1i,求不定方程F(x)+F(y)+F(z)+F(w)=N的自然数解个数。
0N1012

题解:
x2+y2+z2+w2=N的自然数解个数为S(n),N的约数之和为d(N),由雅可比的四平方和定理Jacobi’s four-square theorem可知

S(2km)={8d(m) if k=024d(m) if k>0(misodd)

而本题所求即为(2x+1)2+(2y+1)2+(2z+1)2+(2w+1)2=4(2N+1)的自然数解个数,这等价于x2+y2+z2+w2=4(2N+1)的情况去除(2x)2+(2y)2+(2z)2+(2w)2=4(2N+1)的情况后奇偶性全部相同的方案数,即S(4(2N+1))S(2N+1)16=d(2N+1),于是O(N)算一下即可。

代码:

#include <cstdio>typedef long long LL;LL n, ans;int main(){    scanf("%lld", &n);    n = (n << 1) + 1;    ans = n + 1;    for(LL i = 3; i <= n / i; ++i)        if(n % i == 0)        {            ans += i;            if(i != n / i)                ans += n / i;        }    printf("%lld\n", ans);    return 0;}
0 0