1 条题解
-
0
思路分析
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
- 上传者