1 条题解
-
0
思路
模拟每个月发生的事,用一个变量
hand表示手里的钱,saved表示存在妈妈那里的钱。每个月月初:
hand += 300(妈妈给钱);- 如果
hand < 预算,说明这个月钱不够,直接输出-月份结束; - 如果
hand - 预算 >= 100,就把整百的部分存起来:能存(hand - 预算) / 100张一百; - 扣掉这个月的花销。
到年末,妈妈把存的钱加 20% 还回来:总钱数 =
hand + saved * 1.2。注意saved * 1.2可能有小数,题目实际都是整百存款,结果也是整数,用(int)(saved * 1.2)或saved / 100 * 120即可。代码
#include <stdio.h> int main() { int hand = 0, saved = 0; for (int month = 1; month <= 12; month++) { int budget; scanf("%d", &budget); hand += 300; // 妈妈给钱 if (hand < budget) { // 钱不够用 printf("-%d\n", month); return 0; } int left = hand - budget; // 付完预算后剩的钱 if (left >= 100) { int k = left / 100; // 能存几个整百 saved += 100 * k; hand -= 100 * k; } hand -= budget; // 扣掉花销 } printf("%d\n", hand + (int)(saved * 1.2)); return 0; }易错点
- 判断"钱不够"要在得到 300 元之后、花销之前。
- 存钱只能存整百,
left / 100自动向下取整,正好。 - 输出负号格式是
-7这样的,别写成7 月或多打空格。
- 1
信息
- ID
- 3
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 1
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者
吉公网安备22010402001496号