簡體   English   中英

歐拉計划#6 C ++

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM