欧拉计划第6题:Sum square difference(和的平方 平方的和)

欧拉计划简介,本系列希望以通俗易懂的语言、简洁的代码,带大家体会数学与编程结合的魅力。

Problem 6:Sum square difference

标签:和的平方、平方的和

原文:The sum of the squares of the first ten natural numbers is,

1 2 + 2 2 + ... + 1 0 2 = 385 1^2+2^2+\ldots +10^2=385 12+22+...+102=385

The square of the sum of the first ten natural numbers is,

( 1 + 2 + ... + 10 ) 2 = 5 5 2 = 3025 (1+2+\ldots+10)^2 = 55^2 = 3025 (1+2+...+10)2=552=3025

Hence the difference between the sum of the squares of the first ten natural numbers and the square of the sum is 3025 − 385 = 2640 3025 − 385 = 2640 3025−385=2640.

Find the difference between the sum of the squares of the first one hundred natural numbers and the square of the sum.

翻译 :前十个自然数的 平方的和

1 2 + 2 2 + ... + 1 0 2 = 385 1^2+2^2+\ldots +10^2=385 12+22+...+102=385

前十个自然数的 和的平方

( 1 + 2 + ... + 10 ) 2 = 5 5 2 = 3025 (1+2+\ldots+10)^2 = 55^2 = 3025 (1+2+...+10)2=552=3025

因此,前十个自然数 和的平方平方的和 之差是 3025 − 385 = 2640 3025 − 385 = 2640 3025−385=2640。

求前一百个自然数 和的平方平方的和 之差。

枚举法题解:循环枚举一下。

枚举法代码

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int main() {
    int sum1 = 0, sum2 = 0;
    for (int i = 1; i <= 100; i++) {
        sum1 += i;
        sum2 += i * i;
    }
    // 和的平方、平方的和
    cout << sum1 * sum1 - sum2 << endl;
    return 0;
}

数学题解 :自然数的 和的平方 通项公式为 X = ( n ( n + 1 ) 2 ) 2 \large X=(\frac{n(n+1)}{2})^2 X=(2n(n+1))2

自然数的 平方的和 通项公式为 Y = n ( n + 1 ) ( 2 n + 1 ) 6 \large Y=\frac{n(n+1)(2n+1)}{6} Y=6n(n+1)(2n+1)

和的平方平方的和 差值公式为: X − Y = ( n ( n + 1 ) 2 ) 2 − n ( n + 1 ) ( 2 n + 1 ) 6 = n ( n − 1 ) ( n + 1 ) ( 3 n + 2 ) 12 X-Y=(\frac{n(n+1)}{2})^2-\frac{n(n+1)(2n+1)}{6}=\frac{n(n-1)(n+1)(3n+2)}{12} X−Y=(2n(n+1))2−6n(n+1)(2n+1)=12n(n−1)(n+1)(3n+2)

数学代码

cpp 复制代码
#include <bits/stdc++.h>
using namespace std;

int main() {
    int n = 100;
    cout << n * (n-1) * (n+1) * (3*n+2) / 12;
    return 0;
}

"Project Euler exists to encourage, challenge, and develop the skills and enjoyment of anyone with an interest in the fascinating world of mathematics."

"欧拉计划的存在,是为了每个对数学感兴趣的人,鼓励他们,挑战他们,并最终培养他们的能力与乐趣。"

相关推荐
大宝剑17013 分钟前
blender学习25.3.8
学习·blender
程序员Linc17 分钟前
用OpenCV写个视频播放器可还行?(C++版)
c++·opencv·音视频·opencv 4.11
一只大侠19 分钟前
牛客周赛A:84:JAVA
算法
决斗小饼干39 分钟前
并发编程知识总结
c++
豆豆酱42 分钟前
Informer方法论详解
算法
槐月初叁1 小时前
多模态推荐系统指标总结
算法
迪小莫学AI1 小时前
LeetCode 2588: 统计美丽子数组数目
算法·leetcode·职场和发展
昂子的博客1 小时前
热门面试题第十天|Leetcode150. 逆波兰表达式求值 239. 滑动窗口最大值 347.前 K 个高频元素
算法
Andlin1 小时前
《CMakeList 知识系统学习系列(三):函数和宏》
c++
Forget the Dream1 小时前
设计模式之迭代器模式
java·c++·设计模式·迭代器模式