计算将整数n分解为4平方和的方法的数量
Count the number of ways to decompose integer n into sum of 4 squares
对于整数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
你必须应用两个定理来解决这个问题。
-
Lagrange's_four-square_theorem
-
Jacobi's_four-square_theorem
第二个定理指出
如果n是奇数,则将n表示为四平方和的方法的数量是n的除数和的8倍,如果n是偶数,则表示n的奇数除数和24倍
所以最终问题归结为寻找除数。这可以在O(sqrt(n((时间上完成。由于你有多个查询,这可以在O(log(n((时间内使用Erathoses 的筛子进行进一步优化
相关文章:
- 比较C++中两个整数的最有效和最干净的方法是什么?
- #include < conio.h> 和 getch() 方法之间的关系是什么?
- 一种优雅或至少可行的方法,用于使用和接受具有重载方法和运算符的不同大小的文字数组常量
- 优雅和最短的方法,只保存一半的字节
- 模板中的模板方法 - 实例声明和类方法声明签名不同
- 使用 object 中的方法调用带有 std::bind 和 std::function.target 的 C 样式函数
- 类的方法和对象。参考?智能指针?简单的初始化?
- Visual Studio 2015资源视图和资源编译器使用不同的方法在项目目录中查找图标文件.如何修复
- 用推广make_shared和make_unique的方法复合指针特征类
- 在类中定义数组的方法和字段
- 是否可以基于类模板的参数调用类方法和全局方法
- C++ - 将函数链接到触发器的有效和高效方法
- 运算符重载C++、(+、-、*、/ 等)有没有比复制、替换和粘贴更聪明的方法?
- 将非类库分离为标头和实现的方法
- Arduino trim() 和 replace() 方法返回从 'void' 到非标量类型'String'请求的转换
- 具有相同名称的方法和内部类(错误:.. 与前面的声明冲突)
- C++:涉及继承和"using"时的方法重载
- 是否可以覆盖 "find" 和 "erase" boost::bimaps::bimap.left 的方法?怎么办?
- 返回混合 \ 和 / 的文件系统路径字符串方法
- 在有效时间内将一个正整数写成2的幂的和的方法总数