社区
其它技术问题
帖子详情
500分紧急求助,望各位高手能拔刀相助(算法相关)
orinyangyang
2005-03-24 10:32:00
有一厚度为t1的纸条(纸条宽度不需考虑)围绕一厚度为t2、宽度为w(尺子长度不需考虑)的尺子进行卷绕,(即是以尺子为轴进行卷绕)。假设卷绕空隙(即两层之间的间隙)忽略不计。问:卷绕n圈需要纸条的长度是多少?
不知道我有没有把问题描述清楚。确实是一现实问题(急待解决),恳望各位高手能不吝赐教!谢谢先!!
...全文
206
20
打赏
收藏
500分紧急求助,望各位高手能拔刀相助(算法相关)
有一厚度为t1的纸条(纸条宽度不需考虑)围绕一厚度为t2、宽度为w(尺子长度不需考虑)的尺子进行卷绕,(即是以尺子为轴进行卷绕)。假设卷绕空隙(即两层之间的间隙)忽略不计。问:卷绕n圈需要纸条的长度是多少? 不知道我有没有把问题描述清楚。确实是一现实问题(急待解决),恳望各位高手能不吝赐教!谢谢先!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
20 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
orinyangyang
2005-03-26
打赏
举报
回复
很对不起了各位兄弟,特别是 jitian81411(太阳) 、 shine51151(美丽心情)等。
给分后结贴时系统出错了,给的分系统没有加上去:),望各位大侠见谅,小弟这
给诸位赔不是了。
TSD
2005-03-25
打赏
举报
回复
up
shine51151
2005-03-25
打赏
举报
回复
方法二、原始的计算方法,但容易编程通过迭代实现:
尺子的横截面为长方形,周长为 2 * (t2 + w),纸的厚度为 t1,那么
第一圈纸长度为 : L(1): 2 * (t2 + w)+ 8 * t1 ;(因为缠上一圈纸之后相当于在原来长方形周长的基础上在四个棱角处分别都多出了两段t1(纸的厚度)的长度,画一下图容易一眼就看出来)
第二圈纸长度为 : L(2): L1 + 8 * t1;
………………………………………………
第 n 圈纸长度为: L(n): L(n-1) + 8 * t1;
则纸的总周长L对这n圈的周长求和即得。
以上的步骤可以写个简单函数通过递归调用来实现。(这个楼主自己搞定肯定没问题)
显然序列{L(i)}是个公差d为 8 * t1 的等差数列,因此若手算直接用求和公式也行,
纸的总周长 L = (L(1) + L(n)) * n /2 = 2 * n * (t2+w) + 4 * t1 * n * (n+1)
########################################
这两种方法计算出的结果都是个近似值,我考虑这个近似值应该要比实际中所用纸的长度要略大些,
因为棱角处要是卷成弧线就会节省出一部分纸的长度,当然这个误差的大小和n的大小有直接关系,
卷的圈数n越大,误差也就要随之增大。
不知楼主看这样考虑行不行?
shine51151
2005-03-25
打赏
举报
回复
有两种方法可供楼主参考:
方法一、结合上面的高手jitian81411(太阳)的建议,我们可以用计算体积来求解这个实际问题:
假设是长方体的尺子,设纸条的宽度为b,厚度为t1 ;尺子的厚度为t2,宽度为w,
则被包在纸条内的尺子的体积是 v1 = t2 * w * b;
(其中 t2 * w 为横截面面积,b为被纸条包住的尺子部分的高)
则包了n圈纸后总体积为 v2 =(t2 + 2 * n * t1)*(w + 2 * n * t1)*b;
因此纸条的长度L=(v2 - v1)/(b * t1)(其中 v2 - v1 为卷在尺上的纸条的总体积)
(相当于把卷着的纸条拉开展平了来看,也是个长方体,长就是为L,底面积为 b * t1 )
shine51151
2005-03-25
打赏
举报
回复
re : 楼主:“如果尺子的厚度很小的话,卷绕到最后,其截面应该是个椭圆吧。这样的话,算法是不是要改呢?”
我的看法:问题中尺子本身是个长方体,当它的厚度很小,或者纸有一定的韧性的话,在卷上纸的过程中棱角处会出现圆弧的现象。但是,现实中的类似这样的问题不可能得出个十分精确的结果。
要是你把它的某部分看成椭圆来考虑,那得出的结果有可能比看成长方体的误差还大,因为椭圆的周长公式 L≈π[1.5(a+b)-sqrt(ab)] 本身就是个利用无穷级数积分出的一个近似值。
既然两者都存在误差,而且你题目中要求" 假设卷绕空隙(即两层之间的间隙)忽略不计" ,那么把问题的模型归为长方体来求解既简化了计算又符合了题意,何必找个难求解的椭圆体来为难自己呢?
tfq
2005-03-25
打赏
举报
回复
纸条,尺子的长度已经说不考虑了,如何算的体积?
tfq
2005-03-25
打赏
举报
回复
n较小了近似成矩形,n较大时近似成椭圆,进行迭代
jitian81411
2005-03-25
打赏
举报
回复
程序自己去写
jitian81411
2005-03-25
打赏
举报
回复
假设是长方体的尺子,假设纸条的宽度为x,包在纸条内的尺子的体积是v1 = x*t2*w;
n圈的话总体积是v2 = x*(t2+2n)*(w+2n);
纸条的长度l=(v2 - v1)/(x*t1)
jitian81411
2005-03-25
打赏
举报
回复
用体积计算
orinyangyang
2005-03-25
打赏
举报
回复
想和zengwujun(月之海)兄讨论一下:
卷第一圈是当然可以用上面说的公式,但是再往后面卷时,每一圈应该是个椭圆吧。那么这是还用2*t2+2*w2的公式计算每一圈的长度是不是就不太精确了呢?
各位高手请继续出招啊,高分等着您来拿呢!!!
zhousqy
2005-03-24
打赏
举报
回复
up
aime99
2005-03-24
打赏
举报
回复
递归算法
yjh1982
2005-03-24
打赏
举报
回复
每圈需要的厚度是前面那圈的直径
luohua_liushui
2005-03-24
打赏
举报
回复
把尺子的横截面看成长方形,周长为(t2+t2+w+w),由于纸有一定厚度,那么第一圈纸长度为
(t2+t2+w+w+4*t1)(选择纸厚度的中线计算长度,比较合理),第二圈纸长度为(t2+t2+w+w+4*t1+8*t1),第三圈纸长度为
(t2+t2+w+w+4*t1+8*t1+8*t1),第四圈纸长度为
(t2+t2+w+w+4*t1+8*t1+8*t1+8*t1),
.......
依次类推,相信应该可以做出来了。
zengwujun
2005-03-24
打赏
举报
回复
//把下面加上去算总长度
int sum=0;
for(int i=1;i<=n;++i)
sum += fun(t1,t2,w2,i);
printf("%d圈纸条总长度为%d\n",n,sum);
zengwujun
2005-03-24
打赏
举报
回复
#include "stdio.h"
//纸条厚度,尺子厚度,宽度,第几圈
int fun(int t1,int t2,int w2,int n)
{
if(n==1)return 2*t2+2*w2;
return fun(t1,t2+t1,w2+t1,n-1);
}
void main()
{
int t1,t2,w2,n;
printf("纸条厚:");
scanf("%d",&t1);
printf("尺子厚度和宽度:");
scanf("%d,%d",&t2,&w2);
printf("要求第几圈:");
scanf("%d",&n);
printf("第%d圈纸条长度为%d\n",n,fun(t1,t2,w2,n));
}
dongpy
2005-03-24
打赏
举报
回复
厚度为t2、宽度为w(尺子长度不需考虑)的尺子分成4面,记录每一面尺子的纸条层数,就可以算出当
前卷这一面时所需的纸条长度。
pcboyxhy
2005-03-24
打赏
举报
回复
体积不是可以算的吗?
体积除以截面面积不就是长度吗?
orinyangyang
2005-03-24
打赏
举报
回复
如果尺子的厚度很小的话,卷绕到最后,其截面应该是个椭圆吧。这样的话,算法是不是要改呢?
请高手们继续指教!!
到底怎么样的
高手
才是
高手
有人讲深藏不露者才是
高手
,这类
高手
平日一般都在深山老林中潜心修炼,与世无争,甚至一辈子都不愿意出手一次,圆寂之后才被后人发现,然后世世代代传为神话,相信这类
高手
一般不在CSDN。 有人讲适时出手者才是
高手
,此类
高手
修行颇深,与人谦逊可亲,大智若愚,平日里虽不露锋芒,但是到了危急时刻,便会力挽狂澜,出手相助,有幸得到这类
高手
帮助的人一般问题就会迎刃而解,我想CSDN中应该有为数寥寥的这类高...
java
拔刀相助
之函数及
相关
练习
函数在计算机中的原理 代码运行的基础 代码都是加载到内存中去执行的,函数的代码也是一样的。内存的大小是有限的,所以需要考虑代码的加载数量和处理生成的数据量,这些与性能优化有关。 函数的运行环境是堆栈,堆中数据需要入栈进行操作,最终出栈回到堆堆栈用于动态内存的
分
配和释放。 程序员们通常 ...
炒鸡实用的十大基础
算法
你都知道吗?
说起
算法
,你的知识宝库里首先搜索到的是什么呢?哈哈,想不起来吗?木有关系~接下来将会帮你找回这些老朋友。 刎颈之交级朋友一:快速排序
算法
快速排序是由东尼·霍尔所发展的一种排序
算法
。在平均状况下,排序 n 个项目要Ο(nlogn) 次比较。在最坏状况下则需要Ο(n2) 次比较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(nlogn)
算法
更快,因为它的内部循环(innerloop)...
C语言循环的BUG苦恼了两天,苦不堪言,哪位大神能
拔刀相助
!!!
#include<stdio.h> #include<string.h> /* 在自学C的小白一枚,书上留的习题 为什么循环到第二次就出问题了? 跳过gets(a)直接到gets(b),也就是说,打印到屏幕上的,是 连续的请输入学号: 请输入成绩: (光标) 注:我省了主函数没写 */ void put(char a[],char b[],float c)...
求BOM树型展开的总用量
一个BOM展开求总使用量问题
求助
:特别邀请NEWKID,BELL6248,NYFOR,YANGTINGKUN(之前参与过我的BOM
求助
题目),当然也请各路
高手
拔刀相助
1.建表:表1 结构表create table MANUF_...
其它技术问题
3,881
社区成员
9,054
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章