学习方法与心得

86 阅读3分钟

在学习编程的过程中,刷题是一个非常重要的环节。近期,我使用豆包MarsCode AI 刷题工具完成了一系列编程题目,其中一道有趣的题目《充电闪充时间计算》让我收获颇丰。这篇文章将分享该题目的思路解析、代码实现以及使用 AI 辅助刷题的心得。


一、题目背景

题目描述
小R有 nn 台电脑,每台电脑电池容量分别为 a[i]a[i]。她可以选择闪充模式为每台电脑每单位时间充电 4x4x 电量,求充满所有电脑需要的总时间,结果需保留小数点后两位。

输入

  1. nn:电脑数量。
  2. xx:每单位时间普通充电的电量。
  3. aa:每台电脑的电池容量数组。

输出
总时间(小数点后保留两位)。


二、思路解析

1. 问题分析

这道题本质是一个简单的数学问题:我们只需计算每台电脑在闪充模式下充满所需的时间并累加即可。

公式为:

ti=a[i]4×xt_i = \frac{a[i]}{4 \times x} T=∑i=1ntiT = \sum_{i=1}^n t_i

其中,tit_i 是第 ii 台电脑的充电时间,TT 是总时间。

2. 思路分解

  1. 遍历数组 aa,对每台电脑的电池容量 a[i]a[i],计算闪充时间 tit_i。
  2. 累加所有 tit_i 得到总时间 TT。
  3. 使用格式化工具将结果保留两位小数。

三、代码实现

以下是 Java 的完整代码实现:

import java.text.DecimalFormat;

public class Main {
    public static void main(String[] args) {
      
        System.out.println(solution(4, 1, new int[]{2, 3, 4, 5})); 
        System.out.println(solution(3, 2, new int[]{4, 6, 8})); 
        System.out.println(solution(2, 1, new int[]{10, 5})); 
    }

    public static String solution(int n, int x, int[] a) {
        double totalTime = 0.0;
        for (int battery : a) {
            totalTime += (double) battery / (4 * x);
        }
        DecimalFormat df = new DecimalFormat("0.00");
        return df.format(totalTime);
    }
}

运行结果

输入示例 1

n = 4, x = 1, a = [2, 3, 4, 5]

输出

3.50

输入示例 2

n = 3, x = 2, a = [4, 6, 8]

输出

2.25

四、学习总结

1. 新知识点:

  • DecimalFormat 的使用:格式化小数输出时,DecimalFormat 是一个非常方便的工具,可以直接输出指定格式的结果。
  • 浮点数计算的精度问题:在除法运算中,需要显式转换为 double 类型,以防止精度损失。

2. 使用 MarsCode AI 的心得:

  1. 快速问题理解:AI 能够将题目快速解析成关键数学公式和逻辑。
  2. 代码模板生成:通过 MarsCode AI 提供的初始代码模板,减少了手动书写的时间,让我更专注于逻辑优化。
  3. 错误调试辅助:在编码过程中遇到异常时,AI 可以快速分析代码,并提供准确的调试建议。

五、学习方法与建议

  1. 定期总结错题:通过 MarsCode AI 的错题记录功能,将错误点汇总,并在下一次刷题中有针对性地练习。
  2. 分解问题学习:对于复杂题目,先将其分解成简单问题,再逐步解决,提升逻辑能力。
  3. 结合学习资源:将 MarsCode AI 提供的题解与其他编程资源结合,丰富自己的思路。