戏子多秋694 2024-11-03 09:26 采纳率: 33.3%
浏览 3

各位看看这个我哪里有错了

我觉得他及时求最小公倍数的题

img

img

https://img-mid.csdnimg.cn/release/static/image/mid/ask/9c3f664b0b674943a5abfd942cd945f1.png "#left")

交oj上说测试1没过,就下面这个样子也不说测试样例是什么,救命!

img

  • 写回答

2条回答 默认 最新

  • 香格里辣 2024-11-03 09:27
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    首先,我注意到你的代码中有一些明显的问题和不规范的写法。让我们逐一分析并提供修正建议:

    1. 代码中的符号使用不规范。例如,你使用了“√”符号和一些奇怪的数字排列(如“11”),这些都不是标准的C++代码符号。请去掉这些非标准符号。
    2. 在C++代码中,你应该使用英文的逗号、括号和分号等符号,而不是使用中文的标点符号。例如,“,”应替换为英文逗号“,”,“!”应替换为英文感叹号“!”等。
    3. 在计算最小公倍数时,你的代码逻辑是正确的,即使用两数相乘再除以它们的最大公因数来得到最小公倍数。但是你的代码中缺少求最大公因数的部分,应该使用辗转相除法(欧几里得算法)来求最大公因数。你的代码中只有求最大公因数的循环部分,但并没有将求得的最大公因数存储起来。
    4. 你的代码中有一些不必要的变量和数组声明,如B[100005], A[100005],C[100005]M[1005]等,这些在你的代码逻辑中并未使用到,可以删除。

    基于以上分析,我为你提供一个修正后的代码示例:

    #include <iostream>
    using namespace std;
    
    int main() {
        int a, b;
        cin >> a >> b;
        int m = a * b; // 两数相乘得到它们的乘积
        int r; // 用于存储余数
        while (b != 0) { // 使用辗转相除法求最大公因数
            r = a % b;
            a = b;
            b = r;
        }
        int gcd = a; // a现在存储了最大公因数值
        int lcm = m / gcd; // 计算最小公倍数
        cout << lcm << endl; // 输出最小公倍数
        return 0;
    }
    

    请注意,这是一个简化版的代码示例,只包含了求最小公倍数的逻辑部分。如果你的题目还有其他要求或限制条件,请提供更多的信息以便我能提供更准确的帮助。

    评论

报告相同问题?

问题事件

  • 修改了问题 11月3日
  • 创建了问题 11月3日