我编写了一个代码,用于计算并输出前十个自然数的平方和与总和的平方之间的差值。
问题在于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;
}
答案 0 :(得分:6)
请注意pow
是一个适用于浮点数的函数。在隐式转换为int期间,优化可能会导致舍入错误或截断。将pow(i, 2)
替换为i*i
,您将获得纯整数运算,从而得到精确的结果。
答案 1 :(得分:0)
#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;
}
答案 2 :(得分:0)
使用JavaScript
if (window.location.pathname == "/") {
window.location.href = "/index.html";
}