【题解】#68. 「NOIP2004」津津的储蓄计划 题解(2023-07-19更新)

发布时间 2023-08-17 18:54:00作者: szhiy

#68. 「NOIP2004」津津的储蓄计划 题解

本文章的访问次数为

Part 1 提示

题目传送门

  • 欢迎大家指出错误并私信这个蒟蒻
  • 欢迎大家在下方评论区写出自己的疑问(记得 @ 这个蒟蒻)

Part 2 背景

这是这个蒟蒻的第一篇题解,也是这个蒟蒻对自己的 \(50\) AC 的纪念。

Part 3 更新日志

  • 2023-02-01 17:20 文章完成
  • 2023-02-02 16:24 提交审核
  • 2023-02-03 16:09 文章审核通过
  • 2023-02-04 22:15 修改了注释
  • 2023-05-27 09:27 修改了 \(\LaTeX\)
  • 2023-07-01 15:45 修改了代码
  • 2023-07-19 20:41 更改了文章格式,使文章看起来更加美观

Part 4 题目知识点

模拟

Part 5 题意说明

有可能在某个月的月初,津津手中的钱加上这个月妈妈给的钱(津津可以随时把整百的钱存在她那里,到了年末她会加上 \(20\%\) 还给津津),不够这个月的原定预算(每个月的月初,在得 到妈妈给的零花钱后,如果她预计到这个月的月末手中还会有多于 \(100\) 元或恰好 \(100\) 元,她就会把整百的钱存在妈妈那里,剩余的钱留在自己手中),判断会不会出现这种情况。如果不会,计算到 \(2004\) 年年末,妈妈将津津平常存的钱加上 \(20\%\) 还给津津之后,津津手中会有多少钱。

Part 6 代码

// #68. 「NOIP2004」津津的储蓄计划
// code by:st20250113
#include <bits/stdc++.h>

using namespace std;

int a[12], moneyma, moneyjin; // m表示现在存在妈妈那里的钱,n表示津津手里的钱,要记得先清零(放在主函数外自动清零)

int main()
{
    for (int i = 0; i <= 11; i++)
    {
        scanf("%d", &a[i]); // 输入每个月的预算
    }
    for (int i = 0; i <= 11; i++)
    {
        moneyma = ((moneyjin + 300 - a[i]) / 100) * 100 + moneyma;                // 计算存在妈妈的钱
        moneyjin = (moneyjin + 300 - a[i]) - (moneyjin + 300 - a[i]) / 100 * 100; // 计算手里的钱
        if (moneyjin < 0)                                                         // 考虑到不够用的情况
        {
            cout << "-" << i + 1;
            return 0;
        }
    }
    cout << moneyma * 1.2 + moneyjin << endl; // 按要求计算并输出
    return 0;
}