题解 | #藻类植物#

藻类植物

https://www.nowcoder.com/practice/624cee6440a644398df5bade13297f49

题目链接

藻类植物

题目描述

我们用 表示第 年年初池塘中藻类植物的总重量。池塘中藻类植物的发展满足递推关系:。 现在给你相关的初始参数,请你计算未来十年里每年年初池塘中藻类植物的总重量。

解题思路

本题是一个简单的递推关系模拟问题。然而,题目描述中关于输入变量的说明与给出的示例输入输出不完全匹配,这需要我们首先根据示例来推断正确的计算逻辑。

1. 从示例反推规律

给定的示例输入为 2 10 20,输出为 30, 50, 90, 170, ...。 设第 年的重量为 。那么输出序列的开头是 。 我们假设关系式为

  • 对于 :
  • 对于 :

联立这两个方程,我们得到:

代入第一个方程:

所以,正确的递推关系是

2. 关联输入与参数

我们已经推断出 。 根据公式,我们可以计算出 的值:

我们将推断出的参数 与输入 2 10 20 对应,可以合理地假设输入的三个整数分别代表

3. 算法实现

因此,解题步骤如下:

  1. 读取三个整数,分别视为 (初始为 )。
  2. 循环 10 次,模拟未来 10 年。
  3. 在每次循环中,应用公式 计算下一年的重量。
  4. 输出
  5. 更新 以便进行下一次计算。

代码

#include <bits/stdc++.h>

using namespace std;

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    long long r, k, w;
    // 根据分析,输入顺序为 r, k, w1
    cin >> r >> k >> w;

    for (int i = 0; i < 10; ++i) {
        w = r * w - k;
        cout << w << endl;
    }

    return 0;
}
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        // 根据分析,输入顺序为 r, k, w1
        long r = sc.nextLong();
        long k = sc.nextLong();
        long w = sc.nextLong();

        for (int i = 0; i < 10; i++) {
            w = r * w - k;
            System.out.println(w);
        }
    }
}
def solve():
    # 根据分析,输入顺序为 r, k, w1
    r, k, w = map(int, input().split())

    for _ in range(10):
        w = r * w - k
        print(w)

solve()

算法及复杂度

  • 算法:模拟
  • 时间复杂度:,因为循环的次数是固定的 10 次。
  • 空间复杂度:,只需要常数级别的变量来存储 和当前的重量
全部评论

相关推荐

10-29 16:42
门头沟学院 Java
1.今天什么国标的公司打电话约面试,还得准备ppt,好麻烦,网上查薪资一般,打算拒了,不面了2.字节又复活了,什么安全开发,也不知道怎么样,面一面试试吧,还是挺想去字节的,但好难,随缘吧所以今天没面试
嵌入式的小白:面试前可以好好准备下 1.看看你投递的岗位的岗位描述,分析下是哪个业务线,同使要罗列他们描述中提到的技术点 2.根据1中的两点准备 3.岗位描述中应该还有语言要求,这个刷刷八股,要是对自己语言能力很有把握,那就不用看这点了 4.找下你简历中项目部分,看有没有和岗位描述中技术点重合的,这种在面试提到项目时,是高概率问题 好好准备,祝你面试顺利
我的求职进度条
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务