
【分析问题】
这是一个单位换算和数学计算问题:
- 输入:n(米),x(厘米),y(厘米)
- 核心逻辑:计算在有限长度内能容纳多少朵花
- 关键点:需要统一单位(将米转换为厘米),考虑花与间隔的排列方式
- 计算思路:
- 将总长度从米转换为厘米:n = n × 100 (常用的调整变量值技巧)
- 每朵花占用空间:x + y 厘米(一朵花加一个间隔)
- 但最后一朵花后面不需要间隔,所以需要特殊处理
- 计算方法:先计算能放多少组”花+间隔”,再看剩余空间是否能再放一朵花
【建立模型(伪代码)】
读取 n, x, y
将总长度转换为厘米:n = n * 100
计算每组(花+间隔)的长度: x + y
计算完整组的数量:flower = n / (x+y) (注意,使用整数变量存小数数值会删除小数的技巧)
计算剩余长度:n-flower*(x+y)
如果剩余长度 >= x,则可以再多放一朵花
否则,只能放 flower 朵花
输出总花朵数
【编写代码】
#include <iostream>
using namespace std;
int main() {
double n, x, y;
cin >> n >> x >> y;
// 将总长度从米转换为厘米,统一单位
n = n * 100;
//计算能够制作的数量
//注意,这里把除得的小数赋值给整数,会直接删除小数部分
//如5.99 赋值后是5,不会四舍五入
int flower = n / (x+y);
// 如果有余数,看余数能否够制作一个的
if((n-flower*(x+y))>=x){
flower++;
}
cout << flower << endl;
return 0;
}
【保存编译运行】