C++编程 有一个八层灯塔,每层所点灯数是上一层的两倍,共有765盏灯,求灯塔塔底灯数
来源:学生作业帮 编辑:搜狗做题网作业帮 分类:综合作业 时间:2024/07/19 05:24:41
C++编程 有一个八层灯塔,每层所点灯数是上一层的两倍,共有765盏灯,求灯塔塔底灯数
麻烦使用函数调用编写 我会写不过函数的调用写不出来.
麻烦使用函数调用编写 我会写不过函数的调用写不出来.
![C++编程 有一个八层灯塔,每层所点灯数是上一层的两倍,共有765盏灯,求灯塔塔底灯数](/uploads/image/z/16080990-6-0.jpg?t=C%2B%2B%E7%BC%96%E7%A8%8B+%E6%9C%89%E4%B8%80%E4%B8%AA%E5%85%AB%E5%B1%82%E7%81%AF%E5%A1%94%2C%E6%AF%8F%E5%B1%82%E6%89%80%E7%82%B9%E7%81%AF%E6%95%B0%E6%98%AF%E4%B8%8A%E4%B8%80%E5%B1%82%E7%9A%84%E4%B8%A4%E5%80%8D%2C%E5%85%B1%E6%9C%89765%E7%9B%8F%E7%81%AF%2C%E6%B1%82%E7%81%AF%E5%A1%94%E5%A1%94%E5%BA%95%E7%81%AF%E6%95%B0)
供参考 答案为3#include <stdio.h>
int calc(int i)
{
\x09int j;
\x09int sum = 0;
\x09for(j = 0; j < 8; j ++)
\x09\x09sum+=i, i*=2;
\x09return sum;
}
int main()
{
\x09int i =1;
\x09int r;
\x09while(1)
\x09{
\x09\x09r = calc(i);
\x09\x09if(r >= 765) break;
\x09\x09i ++;
\x09}
\x09if(r == 765) printf("result = %d\n", i);
\x09else printf("no such result\n");
\x09return 0;
} 这样效率更高一些#include <stdio.h>
int calc(int i)
{
\x09int j;
\x09int sum = 0;
\x09for(j = 0; j < 8; j ++)
\x09\x09sum+=i, i*=2;
\x09return sum;
}
int main()
{
\x09int r;
\x09r = calc(1);
\x09if(765%r) printf("no such result\n");
\x09else printf("result = %d\n", 765/r);
\x09return 0;
}
再问: 答案是384把。。。 求灯塔塔底灯数 !
再答: 抱歉 没注意是塔底以为是塔顶呢
修改后第一种方式 暴力破解#include <stdio.h>
int calc(int i)
{
int j;
int sum = 0;
for(j = 0; j < 8; j ++)
sum+=i, i*=2;
return sum;
}
int main()
{
int i =1;
int r;
while(1)
{
r = calc(i);
if(r >= 765) break;
i ++;
}
if(r == 765) printf("result = %d\n", i<<7);
else printf("no such result\n");
return 0;
}
第二种方式 公式计算#include <stdio.h>
int calc(int i)
{
int j;
int sum = 0;
for(j = 0; j < 8; j ++)
sum+=i, i*=2;
return sum;
}
int main()
{
int r;
r = calc(1);
if(765%r) printf("no such result\n");
else printf("result = %d\n", 765/r << 7);
return 0;
}
再问: 嗯嗯 不错! 不过那个r = calc(1)啥意思
再答: 每次都是倍数增加都是8层所以如果塔顶是n个的话,那么总数就是n+2*n+...+2^7*n也就是n*(1+2+4+...+2^7)所以计算出1的情况 再除一下 就可以了所以呢 还有一个类似作弊的公式计算法
#include <stdio.h>
int calc(int i)
{
return (i<<8) -1;
}
int main()
{
int r;
r = calc(1);
if(765%r) printf("no such result\n");
else printf("result = %d\n", 765/r << 7);
return 0;
}代码就是这样一点点优化出来的
int calc(int i)
{
\x09int j;
\x09int sum = 0;
\x09for(j = 0; j < 8; j ++)
\x09\x09sum+=i, i*=2;
\x09return sum;
}
int main()
{
\x09int i =1;
\x09int r;
\x09while(1)
\x09{
\x09\x09r = calc(i);
\x09\x09if(r >= 765) break;
\x09\x09i ++;
\x09}
\x09if(r == 765) printf("result = %d\n", i);
\x09else printf("no such result\n");
\x09return 0;
} 这样效率更高一些#include <stdio.h>
int calc(int i)
{
\x09int j;
\x09int sum = 0;
\x09for(j = 0; j < 8; j ++)
\x09\x09sum+=i, i*=2;
\x09return sum;
}
int main()
{
\x09int r;
\x09r = calc(1);
\x09if(765%r) printf("no such result\n");
\x09else printf("result = %d\n", 765/r);
\x09return 0;
}
再问: 答案是384把。。。 求灯塔塔底灯数 !
再答: 抱歉 没注意是塔底以为是塔顶呢
修改后第一种方式 暴力破解#include <stdio.h>
int calc(int i)
{
int j;
int sum = 0;
for(j = 0; j < 8; j ++)
sum+=i, i*=2;
return sum;
}
int main()
{
int i =1;
int r;
while(1)
{
r = calc(i);
if(r >= 765) break;
i ++;
}
if(r == 765) printf("result = %d\n", i<<7);
else printf("no such result\n");
return 0;
}
第二种方式 公式计算#include <stdio.h>
int calc(int i)
{
int j;
int sum = 0;
for(j = 0; j < 8; j ++)
sum+=i, i*=2;
return sum;
}
int main()
{
int r;
r = calc(1);
if(765%r) printf("no such result\n");
else printf("result = %d\n", 765/r << 7);
return 0;
}
再问: 嗯嗯 不错! 不过那个r = calc(1)啥意思
再答: 每次都是倍数增加都是8层所以如果塔顶是n个的话,那么总数就是n+2*n+...+2^7*n也就是n*(1+2+4+...+2^7)所以计算出1的情况 再除一下 就可以了所以呢 还有一个类似作弊的公式计算法
#include <stdio.h>
int calc(int i)
{
return (i<<8) -1;
}
int main()
{
int r;
r = calc(1);
if(765%r) printf("no such result\n");
else printf("result = %d\n", 765/r << 7);
return 0;
}代码就是这样一点点优化出来的
如图,一艘轮船按箭头所示方向行驶,C处有一个灯塔,请你根据图中所标数据,求从灯塔C处观测A、B两处时的
某一加工厂,堆了一个梯形的钢管,最上层有6根,每下一层加一根.共有90根.这堆钢管共有多少层?
一个四层塔,每一层点灯的盏数都是它的上一层的三倍,已知最顶层点了2盏灯,这座塔供点了多少盏灯?
1.关于角那章的一个角内有N条射线,此共有几个角?2.灯塔A在灯塔B的西南方向上,相聚35海里,轮船C在灯塔B的北偏西3
灯塔
S在一座7层的宝塔上共装了381盏灯,从塔底第一层向上,每一层灯的盏数都是上一层的两倍.塔顶有多少盏灯?
某大楼共有15层,地上有12层地下有3层,请用正负数表示这栋楼每层的层号
如图是由若干个小圆圈堆成的三角形图案,最上面一层有一个圆圈,下面各层比上一层多一个圆圈,一共堆了八
灯塔B在灯塔A北偏东60°方向40海里处,轮船C在灯塔A的正东方向,在灯塔B的南偏东30°,试画出轮船C的位置(每10海
一个书架有3层,第一层24本,第二层40本,第三层48本,从任意一层选三本相邻的书,一共有几种拿法
由一群人可组成一个四层的空心方阵,最外面一层每边30人,那么这群人共有 人
阅读短文回答问题家乡的石塔从远处看,石塔一层又一层的,很高.走进石塔,就可以看清石塔约有10米多高,共有八层.塔身是用石