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\n", i+1,temp); } } /*这个题目我debug了很多次,错的地方有两个,首先π的精度问题,可用acos(-1.0) 其次,我这里在求角度q时 N参与了除法 导致出现整除误差的问题 还要注意case-%d:-%d*/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧