BZOJ 1429 方程的解

题目: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;
}

你可能感兴趣的:(数论)