当前位置: 首页 > news >正文

CPS-J/S冲奖第15天:真题解析


解题思路

  1. 理解工资发放规律

    • 第1天:1枚金币。

    • 接下来的2天(第2、3天):每天2枚。

    • 接下来的3天(第4、5、6天):每天3枚。

    • 接下来的4天(第7-10天):每天4枚。

    • 依此类推,每个阶段的天数等于当前阶段的金币数。

  2. 分解阶段计算

    • 每个阶段 n 持续 n 天,每天发放 n 枚金币。

    • 当总天数未达到 k 时,累加完整阶段的金币。

    • 若最后阶段天数不足,则按剩余天数计算。

  3. 循环累加

    • 使用循环逐个处理每个阶段,直到总天数超过 k

    • 对于完整阶段,直接累加 n*n

    • 对于不完整阶段,累加剩余天数乘以当前阶段的金币数。


代码实现

#include <iostream>
using namespace std;

int main() {
    int k;
    cin >> k;
    
    long long total = 0;  // 总金币数
    int current_days = 0; // 已累计的天数
    int n = 1;            // 当前阶段的金币数
    
    while (true) {
        // 如果当前阶段的n天可以全部包含在k天内
        if (current_days + n <= k) {
            total += n * n;        // 累加n天的金币
            current_days += n;     // 更新已累计的天数
            n++;                   // 进入下一阶段
        } 
        // 否则处理剩余天数
        else {
            int remaining_days = k - current_days;
            total += remaining_days * n;
            break;
        }
    }
    
    cout << total << endl;
    return 0;
}

代码解析

  1. 变量初始化

    • total:记录总金币数。

    • current_days:记录已累计的天数。

    • n:表示当前阶段的金币数和天数。

  2. 循环处理阶段

    • 每次循环判断当前阶段 nn 天是否能全部包含在 k 天内。

    • 如果可以,累加 n*n 到总金币,并更新已累计天数。

    • 如果不能,计算剩余天数并累加对应金币,结束循环。

  3. 输出结果

    • 循环结束后输出总金币数。


示例

输入

5

输出

11

解析

  • 阶段1(1天):1枚 → 总金币1。

  • 阶段2(2天):每天2枚 → 总金币1+4=5。

  • 阶段3剩余2天:每天3枚 → 总金币5+6=11。


总结

  • 时间复杂度:循环次数约为 ,效率极高。

  • 空间复杂度:仅使用常数级额外空间。

  • 关键点:通过数学规律分解阶段,避免逐天计算,提升效率。

相关文章:

  • Spring Boot集成Spring Statemachine
  • 【C++ STL】 容器详解:pair 学习
  • LabVIEW VI Scripting实现连接器窗格自动化
  • JavaScript性能优化实战:让你的Web应用飞起来
  • Nginx 生产环境安全配置加固
  • Python个人学习笔记(14):函数(匿名函数、内置函数(下)、三元表达式)
  • Banana Pi 与瑞萨电子携手共同推动开源创新:BPI-AI2N
  • java Long[] ids转为List<Long> ids
  • Python常用基础类库总结
  • python-leetcode-压缩字符串
  • c++的stl中有哪几种map容器,都有什么应用场景?
  • 【web前端开发】HTML排版标签、HTML语义化标签、常用的文本标签
  • C++11语法糖:auto和范围for循环详解
  • 面向联邦学习隐私保护的同态加密库优化算法研究
  • L1-018 大笨钟
  • java IO涉及实现的各个接口
  • AI术语整理(持续更新)
  • go语言中立即调用的匿名函数
  • 【算法day8】 Z 字形变换 -O(n)算法思路整理
  • 三角函数:从宇宙法则到AI革命的数学密钥
  • 当“小铁人”遇上青浦,看00后如何玩转长三角铁三
  • 纪念|脖子上挂着红领巾的陈逸飞
  • 用贝多芬八首钢琴三重奏纪念风雨并肩20年
  • 浙江省台州市政协原副主席林虹被“双开”
  • 上海“城市文明开放麦”全城总动员,樊振东担任首位上海城市文明大使
  • 美国调整对华加征关税