You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求用长度为N的线材制作边长为L的正方形的最大数量的解题提示

问题描述

现有一段长度为N的线材,需计算用该线材可制作的边长为L的正方形的最大数量。输入参数为n(线材总长度)、l(正方形边长),输出为可制作的正方形的最大数量。

我的实现代码
#include<iostream>
#include<cmath>
#include <algorithm>
using namespace std;

int main(){
  int n,m,sum=0;
  cin>>n>>m;
  int c=0;

  while(n!=sum)
  {
    int x=m;
    x*=4;
    sum+=x;
    c++;
  }

  cout<<c;
}
代码问题分析
  • 变量命名不清晰:输入的第二个参数m对应题目中的边长L,命名与实际含义不符,易造成混淆。
  • 循环逻辑错误:循环条件n!=sum存在严重问题:
    • 当线材总长度n不是单个正方形所需长度(4*L)的整数倍时,sum会持续累加直至超过n,但循环不会终止,直接进入无限循环。
    • 即使n是整数倍,该条件也不符合实际需求逻辑——我们需要的是不超过n的最大累加次数,而非必须让sum等于n。
  • 冗余头文件:代码中引入了<cmath>和<algorithm>,但全程未使用其中的函数,属于无效引入。
正确实现方案

单个正方形需要的线材长度为4*l,最大可制作数量就是总长度n除以单个正方形所需长度的整数结果(整数除法自动舍去小数部分,符合“最大数量”的要求)。

#include<iostream>
using namespace std;

int main(){
    int n, l;
    cin >> n >> l;
    int per_square = 4 * l;
    // 处理边长为0的异常情况(实际场景中L应为正整数)
    if (per_square == 0) {
        cout << 0 << endl;
        return 0;
    }
    cout << n / per_square << endl;
    return 0;
}

内容的提问来源于stack exchange,提问作者Mr xrobot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 08:03:01