| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2972 人关注过本帖
标题:[求助]ACM 组装齿轮问题
取消只看楼主 加入收藏
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
 问题点数:0 回复次数:18 
[求助]ACM 组装齿轮问题

背景

你的弟弟买了一套新的玩具,用这套玩具,他可以组装自己的机器。在玩具中有很多不同尺寸的齿轮,开始的时候他可以直接使用齿轮组装不同转速比的传动装置,但后来他发现有些转速比用已有的齿轮就很难组装出来。他希望你给他编写一个电脑程序,帮助他找到组装传动装置的方法。

譬如,在这个玩具中包含了 6 齿、12 齿和 30 齿的齿轮,而你的弟弟希望搞一个转速比为 5:4 的传动装置。下图就显示了一种可能的方案:

这个传动方案使用了四个齿轮,第一跟轴上是 30 齿和 12 齿的,第二跟轴上是 6 齿和 12 齿的。转速比可以通过如下公式获得:

(30 / 12) * (6 / 12) = (5 / 2) * (1 / 2) = 5 / 4 = 5:4

然而,使用以上三种齿轮,就没法组装出转速比为 1:6 的传动装置。

题目

给定齿轮的大小(齿轮有多少个齿),判断通过这些齿轮能否组成一定的转速比。我们假定每种齿轮的数量都足够多。

输入

输入的第一行是一个数字 n,它表示在玩具中有几种齿轮(1 <= n <= 20)。下一行包含了 n 个数字 c1...cn,以空白符隔开,他们表示了玩具中的 n 种齿轮的大小(5 <= ci <= 100,其中 1 <= i <= n)。你可以假定在玩具中所有齿轮的大小都是最小齿轮大小的倍数。

再下一行有一个整数 m,它表示所需的实现的转速比有多少组,而之后的 m 行中每行都有两个整数 a 和 b,它们表示要实现的转速比为 a:b,其中 1 <= a, b <= 10000。

测试用例 0
测试输入
3
6 12 30
2
5 4
1 6
期待的输出
Gear ratio 5:4 can be realized.
Gear ratio 1:6 cannot be realized.

搜索更多相关主题的帖子: 齿轮 ACM 组装 玩具 
2006-12-03 20:43
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
ACM好难
2006-12-04 19:41
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 

应该算

2006-12-05 12:49
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 

但应该考虑进去啊

2006-12-05 18:08
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
呼唤高手!!!
2006-12-05 20:49
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
有人会吗?
2006-12-06 18:32
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
好烦啊
2006-12-07 12:10
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
好难啊......
2006-12-07 21:13
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 

能解释一下吗?
这么短?

2006-12-08 16:24
yelo20053533
Rank: 1
等 级:新手上路
帖 子:161
专家分:0
注 册:2006-11-27
收藏
得分:0 
以下是引用zgwxwn在2006-12-8 16:14:26的发言:

/*生成齿轮*/
beg = 0; changed = 1;
while ( changed )
{ changed = 0; end = m;
for (i = beg; i < end; i++)
{
for (j = 0; j <= i; j++)
{
sum = size[i] * size[j];
if ( sum < 30001 && cols[sum] == 0 )
{
changed = 1;
cols[sum] = 1;
size[m++] = sum;
}
}
}
beg = end;
}

能详细写一下吗?

2006-12-08 20:12
快速回复:[求助]ACM 组装齿轮问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014105 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved