问题就是:0.1*2^n >8844*1000,求满足的最小正整数n
所以n=log2(8844*1000/0.1)向上取整,一条C语言语句就可以输出了
n=log(8844*1000/0.1)/log(2)+1
参考代码如下:
#include
#include
void main()
{
int n;
n=log(8844*1000/0.1)/log(2)+1; /*计算*/
printf("result = %d",n); /*输出结果*/
}
/*
看下面的规律:
1次: 0.1*2^1=0.2mm
2次: 0.1*2^2=0.4mm
n次:0.1 * 2^n > 8844*1000
----n至少为27次.2^27= 134 217 728
*/
#include
int main()
{
int n,a=2,s=1,i;
double y=1.0;
for(i=1;y<=8844000;++i)//从i=1开始尝试直到y>8844000结束for循环
{ //由于每次的y均为上次的i值所求,所以最终i-1
n=i;
while(n--)//求2^n
s=s*a;
y=0.1*s;
s=1;//s置为1,为下次存放2^n做准备
}
printf("对折的次数至少为: %d\n",i-1);
}
//哪里不懂可以追问O(∩_∩)O~
#include
int math(int m)//M为峰的高度 sum为对折次数 t为纸片对折后的高度
{
double t=0.0001;
int sum=0;
while(t<=m)
{
t*=2;
sum++;
}
return sum;
}
int main()
{
printf("对折%d次",math(8844));
return 0;
}
很简单啊,思路对就好。0.0001*2^n>8844,取得n值即为对折次数。