鱼C论坛

 找回密码
 立即注册
查看: 2634|回复: 2

题目222:球的包装

[复制链接]
发表于 2017-1-5 16:05:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Sphere Packing

What is the length of the shortest pipe, of internal radius 50mm, that can fully contain 21 balls of radii 30mm, 31mm, ..., 50mm?

Give your answer in micrometres (10-6 m) rounded to the nearest integer.


题目:


一个管子内部半径 50mm,如果要完全容纳 21 个半径分别为 30mm, 31mm, ..., 50mm 的球,那么这个管子的最短长度为多少?

格式要求:以微米(10-6 m)为单位的最接近实际值的整数。


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-3-21 00:48:21 | 显示全部楼层
不知道怎么上传图片
public class lglr {
        public static void main(String[] args) {
                double sum = 0;
                double temp = 0;
                for(double i = 30.0;i < 50;i++) {
                        sum += i;
                        temp = len(i,i+1);
                }
                System.out.println(sum+50-temp);
        }
        public static double len(double r1,double r2) {
                return r1+r2-Math.sqrt((Math.pow((r1+r2),2)-Math.pow(50-(r1+r2),2)));
        }
}
第一次写,哪个大佬指正一下哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-17 22:38:24 | 显示全部楼层
本帖最后由 doodu 于 2019-6-18 08:13 编辑

不会弄图片,如果错了请指正
from math import sqrt#使用数学计算库中的开方函数

def ball_n():
        width = 50.0*2   #说明管子的直径是100mm,加入.0变为浮点数
        r = 50.0           #放入第一个小球,第一个小球的半径为50mm,
                         #直径与管子内部直径一致
        temp = 0.0       #声明管子最小长度的变量为0,方便之后累加
        while 1:
                temp += sqrt((width-r-(r-1))**2+(r+(r-1))**2) #见不了草图
                r -= 1       #半径递减
                if r <= 30:  #因为当前循环半径变量使用第n-1个小球,
                             #经过第10行做半径递减后,加入判断语句防止越界
                        break
        h_max = temp + width/2 + r/2  #见不了草图
        return int(h_max*(10**3))     #返回值单位毫米,折算微米需要下降3个数量级

print(ball_n( ))


我计算的答案是:1738074微米
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 16:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表