解题思路:

注意事项:涉及高精度计算(用数组)

参考代码:

#include <stdio.h>

int a[100000];

int main()

{

     int k=1,n=0,i,j;

     scanf("%d",&n);

     a[1]=1;

     for(i = 1; i <= n; ++i)

     {

          int x=0;

          for(j = 1; j <=k; ++j)

          {

              a[j] = a[j]*2+x;

              x = a[j]/10;

              a[j] = a[j]%10;

              if(x!=0 && j==k) k++;//计算到最高位并且有进位,长度加1 

          }

     }

     for(i = k; i >= 1; --i) printf("%d",a[i]); 

     return 0;


点赞(1)
 

0.0分

5 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 2 条评论

洛顾劢 1年前 回复TA
当n=4时,a[1]=8*2+0=16,此时进位,k++,循环体里j++, a[j] = a[j]*2+x;此时j=2,就变成a[2] = a[2]*2+x;a[2]的值是哪里来的呢,没有想明白
H2230823025 2年前 回复TA
陈浩毅真他妈得帅!