前十个自然数的平方之和是,
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 ;
}
发布于 2015-01-05 04:07:38
pow(sum(100) , 2);
使用double
并返回double
,因此可能会出现舍入错误。
使用类似的操作数(也修复操作数的顺序):
cout << sum(100) * sum(100) - sqsum(100) << std::endl;
应该解决你的问题。
发布于 2018-06-01 10:17:04
我认为这是一个比较容易的方法:
#include <iostream>
using namespace std;
int main()
{
int sum_p = 0;
int sum_e = 0;
for(int i=1;i<=100;i++){
sum_p=sum_p+i*i;
sum_e=sum_e+i;
}
sum_e=sum_e*sum_e;
cout<<sum_e-sum_p;
}
https://stackoverflow.com/questions/27779098
复制