c++ - 欧拉计划 #6 C++

标签 c++

前十个自然数的平方和为,

1² + 2²+ ... + 10² = 385

前十个自然数之和的平方是,

(1 + 2 + ... + 10)² = 55² = 3025

因此前十个自然数的平方和与和的平方之差为3025 − 385 = 2640

求前一百个自然数的平方和与和的平方之差。

**他们说我的回答是错误的:( **

//Project eueler problem 6

#include <iostream>
#include <cmath>
using namespace std;

unsigned int sum(int);
unsigned int sqsum(int);

int main()
{
    cout << sqsum(100) - pow(sum(100) , 2);
}


unsigned int sum(int n) // function for finding sum of n numbers
{
    return (n*(n+1))/2;
}

unsigned int sqsum(int n) // function for finding sum of squares
{
     return ((n)*(n+1)*(2*n +1 ))/6 ;
}

最佳答案

pow(sum(100) , 2); 使用 double 并返回 double,因此,您可能会出现舍入错误。

使用类似的东西(也固定操作数的顺序):

cout << sum(100) * sum(100) - sqsum(100) << std::endl;

应该可以解决您的问题。

关于c++ - 欧拉计划 #6 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27779098/

相关文章:

c++ - 每个条目有 2 列的 QTreeView

c++ - 从字符串中获取键/值对并存储在映射中

c++ - Qt拖放按钮;下降未检测

c++ - 初始化一个私有(private)数组c++

c++ - C/C++,选择使用全局参数还是传递参数

c++ - 如何在保持显示位数的同时向左移动小数点?

c++ - 记忆化和朴素算法 - 2 个不同的答案

c++ - 这样使用memset好不好?

c++ - 编译器资源管理器和 GCC 有不同的输出

c++ - 使用 C++ 在 Qt5 中显示曲线