[英]Project Euler #6 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;
應該解決您的問題。
#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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.