1 条题解

  • 0
    @ 2025-10-30 16:55:59

    思路分析

    1. 任务拆解:

    • 读取齿轮数量n
    • 读取n个齿轮的齿数
    • 找到所有齿轮齿数的最小公倍数
    • 计算每个齿轮转动的圈数
    • 输出结果

    2. 关键点分析:

    • 当所有齿轮再次同时啮合时,转过的总齿数相同
    • 总齿数必须是所有齿轮齿数的公倍数
    • 求最小公倍数:从第一个齿轮的倍数开始枚举,找到能被所有齿数整除的数
    • 每个齿轮的圈数 = 总齿数 / 该齿轮齿数

    3. 步骤规划:

    • 读取n和齿数数组a
    • 初始化倍数q=1,标记mark=1
    • 循环寻找最小公倍数:
      • 计算第一个齿轮的q倍齿数gb
      • 检查gb是否能被所有其他齿轮齿数整除
      • 如果不能,q加1继续寻找
    • 计算每个齿轮的圈数并输出

    4. 代码对应:

    • cin>>n; for(int i=1;i<=n;i++) cin>>a[i]; → 读取齿轮数量和齿数
    • while(mark) → 循环寻找最小公倍数
    • gb=a[1]*q; → 计算第一个齿轮的q倍齿数
    • for(int i=2;i<=n;i++) if(gb%a[i]!=0) mark=0; → 检查是否能被所有齿数整除
    • if(mark==1) break; else mark=1; q++; → 根据检查结果决定是否继续
    • for(int i=1;i<=n;i++) cout<<gb/a[i]<<endl; → 输出各齿轮圈数
    • 1

    信息

    ID
    1408
    时间
    1000ms
    内存
    128MiB
    难度
    4
    标签
    (无)
    递交数
    192
    已通过
    89
    上传者