对于整数N (0 <= N <= 10^7)
,并回答以下问题。
有多少种方法可以将整数n分解为4个平方的和?
示例:
给出文件
NUMBER.INP
中的整数n
NUMBER.INP
3
我们将结果写入文件
NUMBER.OUT
是将整数n分解为总和的方式。
NUMBER.OUT
4
结果为4,因为:
3 = 0^2 + 1^2 + 1^2 + 1^2
3 = 1^2 + 0^2 + 1^2 + 1^2
3 = 1^2 + 1^2 + 0^2 + 1^2
3 = 1^2 + 1^2 + 1^2 + 0^2
答案 0 :(得分:2)
您必须应用两个定理来解决此问题。
第二个定理指出
如果n为奇数,则将n表示为四个平方之和的方式数是n的除数之和的八倍;如果n为偶数,则将其表示为n的奇数除数之和的24倍。
因此,最终,您的问题减少到寻找除数。可以在O(sqrt(n))时间上完成。由于您有多个查询,因此可以使用sieve of eranthoses
在O(log(n))时间内进一步优化。