• 17230 计算轴承半径


    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
    ", i+1,temp);
        }
    }
    /*这个题目我debug了很多次,错的地方有两个,首先π的精度问题,可用acos(-1.0)
    其次,我这里在求角度q时 N参与了除法 导致出现整除误差的问题 还要注意case-%d:-%d*/
    View Code
  • 相关阅读:
    软件測试培训笔记
    spring test---測试SpringMvc初识
    第1章第3节 线性表的比較
    Remove Duplicates from Sorted List leetcode
    泛型
    我的改进版2048(1)
    docker镜像和加速
    在 Azure Web 应用中创建 PHP 应用程序
    使用 Azure 门户创建 Windows 虚拟机
    使用 Azure 门户创建 Linux 虚拟机
  • 原文地址:https://www.cnblogs.com/orchidzjl/p/4263626.html
Copyright © 2020-2023  润新知