i编写了一个代码,该代码计算并输出前十个自然数的平方和与平方和之间的差。
问题出在函数squareOfSum()。该函数应返回3025,但始终返回3024。即使我尝试将100放入括号中,我也会得到25502499(25502500是正确的)。不管我放在括号中的数字是多少,我总是遇到相同的问题。我在做什么错?
Here's a screenshot of my output.
#include <iostream>
#include <cmath>
using namespace std;
int sumOfSquares(int limit);
int squareOfSum(int limit);
int main()
{
cout << sumOfSquares(10) << endl;
cout << squareOfSum(10) << endl;
cout << squareOfSum(10) - sumOfSquares(10) << endl;
}
int sumOfSquares(int limit)
{
int sum = 0;
for(int i = 1; i<=limit; i++)
{
sum +=pow(i,2);
}
return sum;
}
int squareOfSum(int limit)
{
int sum = 0, square = 0;
for(int i = 1; i<=limit; i++)
{
sum +=i;
}
square = pow(sum,2);
return square;
}
请注意,pow
是使用浮点数的函数。优化可能会导致在隐式覆盖int期间导致舍入错误或截断。将pow(i, 2)
替换为i*i
,您将获得纯整数算术运算,从而得到精确的结果。
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
int main()
{
int higher_limit = 100;
int SquaresOfSum = 0;
int SumOfSquares = 0,count=0;
for(int i=1;i<=higher_limit;i++){
count += i;
SumOfSquares += pow(i,2);
}
SquaresOfSum = pow(count,2);
cout<<SquaresOfSum-SumOfSquares;
}