码迷,mamicode.com
首页 > 其他好文 > 详细

17230 计算轴承半径

时间:2015-01-31 10:32:14      阅读:487      评论:0      收藏:0      [点我收藏+]

标签:

Description

	轴承是一种十分常见的,在机械传动过程中起固定和减小载荷摩擦系数的部件。也可以说,当其它机件在轴上彼此产生相对运动时,用来降低动力传递过程中的摩擦系数和保持轴中心位置固定的机件。轴承是当代机械设备中一种举足轻重的零部件。
	详细可以参考这个链接:http://baike.baidu.com/view/5545.htm?noadapt=1
	对于大多数的轴承,它们的基本结构都是一个圆柱体。从柱体的一个面看,每个轴承的轮廓都是由两个同心圆构成,在两个同心圆之间有许多的小圆围绕。其中,调心球轴承就是一个经典的模型。
	现在要求轴承里至少要能够放置N个排列在大圆边界内的半径为R的小球(忽略小圆),柱体的底面大圆半径至少要多少?为了精确制造,要求给出的半径必须为整数。




输入格式

	第一行输入一个正整数T,表示将要输入的测试数据数量。
	接下来有T行,每行输入两个正整数N,R,分别表示小球的个数以及小球的半径。
	(T<=100,1<=N,R<=1000)



输出格式

	对于每一组测试数据,输出一行”Case X: ”,其中X表示第几组数据,然后是一个整数,表示能够放置全部小球的柱体的底面半径至少是多少。



 

输入样例

3
2 1
3 2
5 4



 

输出样例

Case 1: 2
Case 2: 5
Case 3: 11



 

提示

第一组数据中,要包含2个半径为1的小球,柱体底面半径最少是2。
第二组数据中,要包含3个半径为2的小球,柱体底面半径最少是4.30940。
第三组数据中,要包含5个半径为4的小球,柱体底面半径最少是10.80520。

 

技术分享
#include"stdio.h"
#include"math.h"
#define PI acos(-1.0)
int main()
{
    int  T, R;
    int i, temp;
    double N,x, y, q, z, r,k[102];
    scanf("%d", &T);
    for (i =0; i < T; i++)
    {
        scanf("%lf%d", &N, &R);
        if (N == 1)
            k[i]=R;
        else
        {
            z = (180 * (N - 2)) / (2 * N);
            q = z / 180 * PI;
            r = R / cos(q) + R;
            k[i]=r;
        }
    }
    for(i=0; i<T; i++)
    {
        temp=k[i];
         if (k[i] > temp)
            temp = temp + 1;
        printf("Case %d: %d\n", i+1,temp);
    }
}
/*这个题目我debug了很多次,错的地方有两个,首先π的精度问题,可用acos(-1.0)
其次,我这里在求角度q时 N参与了除法 导致出现整除误差的问题 还要注意case-%d:-%d*/
View Code

 

17230 计算轴承半径

标签:

原文地址:http://www.cnblogs.com/orchidzjl/p/4263626.html

(1)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!