用数据结构解决这道题

 

不知道题主想要什么语言,这里用python和C语言各写了一份

# -*- coding: utf-8 -*-
"""
Spyder Editor

This is a temporary script file.
"""
import time

# 普通累加求和方法
def sum1(n):
    start_time = time.time()  #开始时间
    s = 0
    for i in range(1, n+1):
        s += i
    end_time = time.time()  #结束时间
    t = end_time - start_time 
    return s, t

# 高斯求和方法
def sum2(n):
    start_time = time.time()  #开始时间
    s = (1 + n) * n // 2
    end_time = time.time()  #结束时间
    t = end_time - start_time  
    return s, t

def test(n):
    s1, t1 = sum1(n)
    s2, t2 = sum2(n)
    print("普通累加求和:", s1, "时间:", t1)
    print("高斯求和:", s2, "时间:", t2)

# 测试
test(10000000)  

img

#include <stdio.h>
#include <time.h>

// 普通累加求和方法
void sum1(long long n) {
    clock_t start_time = clock();  //开始时间
    long long s = 0;
    for (long long i = 1; i <= n; i++) {
        s += i;
    }
    clock_t end_time = clock();  //结束时间
    double t = (double)(end_time - start_time) / CLOCKS_PER_SEC;  // 计算耗时
    printf("普通累加求和:%lld,时间:%f秒\n", s, t);
}

// 高斯求和方法
void sum2(long long n) {
    clock_t start_time = clock();  //开始时间
    long long s = (1 + n) * n / 2;
    clock_t end_time = clock();  //结束时间
    double t = (double)(end_time - start_time) / CLOCKS_PER_SEC;  // 计算耗时
    printf("高斯求和方法:%lld,时间:%f秒\n", s, t);
}

void test(long long n) {
    sum1(n);
    sum2(n);
}

int main() {
    test(10000000);  
    return 0;
}

在C++里的结果会超出int的范围,所以要用long long类型

img