Ball bearings (计算几何)

博客介绍了瑞典SKF公司生产的球轴承,说明了其功能和主要部件。重点提出计算球轴承外圈可容纳球的最大数量问题,给出输入参数(外圈内径、球直径、相邻球最小距离)及范围,要求根据约束条件输出每个实例中可放置球的最大数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

The Swedish company SKF makes ball bearings. As explained by Britannica Online, a ball bearing is “one of the two types of rolling, or anti friction, bearings (the other is the roller bearing). 

Its function is to connect two machine members that move relative to one another so that the frictional resistance to motion is minimal. In many applications, one of the members is a rotating shaft and the other a fixed housing. Each ball bearing has three main parts: two grooved, ring like races and a number of balls. The balls fill the space between the two races and roll with negligible friction in the grooves. The balls may be loosely restrained and separated by means of a retainer or cage.” 
Presumably, the more balls you have inside the outer ring, the smoother the ride will be, but how many can you t within the outer ring? You will be given the inner diameter of the outer ring, the diameter of the balls, and the minimum distance between neighboring balls. Your task is to compute the maximum number of balls that will t on the inside of the outer ring (all balls must touch the outer ring). 

Input

The first line of input contains a positive integer n that indicates the number of test cases. Then follow n lines, each describing a test case. Each test case consists of three positive oating point numbers, D, d, s, where D is the inner diameter of the outer ring, d is the diameter of a ball, and s is the minimum distance between balls. All parameters are in the range [0.0001, 500.0].

Output

For each test case output a single integer m on a line by itself, where m is the maximum number of balls that can t in the ball bearing, given the above constraints. There will always be room for at least three balls.

Sample Input

2
20 1 0.1
100.0 13.0 0.2

Sample Output

54
20

输入:首先是一个T,表示输入实例数。以下每行是一个实例,有3个浮点正数,D,d,s。D是大圆的直径,d是小圆的直径,s是依序相邻的小圆之间的最小距离。所有参数都是在[0.0001, 500.0]范围内。

输入保证大圆中至少可以放3个小圆。

输出:对于每个实例,输出大圆中可以放的小圆数目的最大值。


 

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<string>
#include<cstring>
#include<map>
#include<vector>
#include<set>
#include<list>
#include<stack>
#include<queue>
using namespace std;
typedef long long ll;
const double pi=acos(-1.0);
int main(){
    int T;
    scanf("%d",&T);
    while(T--){
    	double D,d,s;
    	scanf("%lf%lf%lf",&D,&d,&s);
    	double L=d+s;
    	double R=(D-d)/2.0;
    	double c=2*asin((L/2)/R);
    	int ans=(int)(2.0*pi/c);
    	printf("%d\n",ans);
	}
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值