(洛谷)题目题号P1089 [NOIP2004 提高组] 津津的储蓄计划

Hello大家好,我是小亦,今天因为是放假,所以写的题解有小多,那么好了,那么今天我来讲的是来自NOIP2004年提高组的知识,既然是提高组却仍然还是入门的等级(指的是入门的最垃圾等级),正确率也还行,那话不多说赶紧给思路好吧qwq:

首先呢这道题是求枚举和模拟非常的简单,下面呢是我的个人思路步骤:

问题描述

津津每个月从妈妈那里得到300元零花钱。她每个月会预算自己的花销,并且总能花完预算。如果她预计到月末手中还会有超过100元,她就会将整百的钱存到妈妈那里,妈妈会在年末加上20%的利息还给津津。

目标

我们需要确定津津的储蓄计划是否会导致某个月的钱不够用。如果不会,我们需要计算年末时津津手中会有多少钱。

输入

  • 12行数据,每行包含一个小于350的非负整数,表示每个月的预算。

输出

  • 如果某个月钱不够用,输出-X,其中X是出现这种情况的第一个月。
  • 否则,输出年末津津手中会有多少钱。

解决方案

  1. 初始化变量:

    • remaining_money:津津手中剩余的钱,初始为0。
    • total_savings:津津在妈妈那里的总储蓄,初始为0。
    • month:当前月份,从1开始。
  2. 逐月模拟:

    • 对于每个月,执行以下步骤:
      • 计算月初津津手中的总金额(remaining_money + 300)。
      • 如果总金额减去预算大于等于100,计算可以储蓄的金额(整百),并更新total_savingsremaining_money
      • 如果总金额减去预算小于100,更新remaining_money为剩余金额。
      • 检查remaining_money是否小于0,如果是,则输出-X(X为月份)并结束程序。
  3. 计算年末总金额:

    • 年末总金额 = remaining_money + total_savings * 1.2
  4. 输出结果:

    • 如果没有出现资金不足的情况,输出年末津津手中会有多少钱。

说了那么多赶紧给代码在此之前小亦听信大家抄代码可耻哦

#include <iostream>
#include <vector>

int main() {
    std::vector<int> budgets(12); // 存储每个月的预算
    int total_savings = 0; // 总储蓄
    int remaining_money = 0; // 手中剩余的钱
    int month = 0; // 当前月份

    // 读取每个月的预算
    for (int i = 0; i < 12; ++i) {
        std::cin >> budgets[i];
    }

    // 逐月模拟
    for (month = 0; month < 12; ++month) {
        int total_money = remaining_money + 300; // 月初总金额
        int planned_savings = 0;
        if (total_money >= budgets[month]) {
            planned_savings = (total_money - budgets[month]) / 100 * 100;
            total_savings += planned_savings;
            remaining_money = total_money - planned_savings;
            remaining_money -= budgets[month];
        } else {
            std::cout << "-" << (month + 1) << std::endl;
            return 0;
        }
    }

    // 计算年末总金额
    int final_amount = static_cast<int>(remaining_money + 1.2 * total_savings);
    std::cout << final_amount << std::endl;

    return 0;
}

这次写了注释所以请放心食用~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值