nick_chen_id 2024-10-10 17:53 采纳率: 100%
浏览 18
已结题

太戈编程第1120题

《愚公移山》是战国时期思想家列子创作的一篇寓言。

愚公门前有太行,王屋两座大山。在山的正对面居住的愚公苦于山区北部的阻塞,出来进去都要绕道,于是愚公决定要移去这两座山。邻居智叟说不能完成,嘲笑愚公顽固愚蠢,愚公说:“我移不完还有我的子孙后代,一代一代的移。”

已知第一代愚公移走了x[1]吨,第二代移走了x[2]吨,…,第n代移走了x[n]吨。请输出n个数字,代表

截止到第一代一共移走几吨?

截止到第二代一共移走几吨?

截止到第三代一共移走几吨?

……

截止到第n代一共移走几吨?

输入输出格式
输入格式
输入第一行是正整数n,n<=100000。第二行共n个正整数x[i],代表每一代移走几吨,均不超过1000000。
输出格式
输出共一行包含n各正整数。

  • 写回答

1条回答 默认 最新

  • 一轮明月照丘壑 2024-10-10 17:59
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    这个问题可以通过简单的数学计算来解决。每一代愚公都会移走一定数量的石头,我们需要计算从第一代到第n代一共移走了多少石头。我们可以使用累加的方式来解决这个问题。累加从第一代到第n代的移石量,就可以得到每一代的总移石量。在C++中,我们可以使用循环结构来实现这个过程。以下是一个可能的解决方案:

    #include <iostream>
    using namespace std;
    
    int main() {
        int n;
        cin >> n;  // 输入愚公移山的代数
        long long x[n];  // 定义存储每一代移走的石头数量的数组
        long long sum = 0;  // 用于存储累计的移石总量
        for (int i = 0; i < n; i++) {  // 循环输入每一代移走的石头数量
            cin >> x[i];
            sum += x[i];  // 累加每一代的移石量
        }
        for (int i = 0; i < n; i++) {  // 输出截止到每一代的总移石量
            if (i == 0) {  // 如果是第一代,则输出截止到这一代移走的石头数量
                cout << sum << " ";
            } else {  // 否则输出截止到这一代之前已经移走的石头数量加上这一代移走的数量
                cout << sum + x[i-1] << " ";
            }
        }
        return 0;
    }
    

    这个程序首先读取愚公移山的代数n和每一代移走的石头数量,然后计算并输出截止到每一代的总移石量。注意,由于石头的数量可能非常大,我们使用long long类型来存储这些数字以避免溢出。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月21日
  • 已采纳回答 10月13日
  • 创建了问题 10月10日