解题思路:
注意事项:涉及高精度计算(用数组)
参考代码:
#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;
}
0.0分
6 人评分
当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]的值是哪里来的呢,没有想明白
C语言程序设计教程(第三版)课后习题11.3 (C语言代码)浏览:1067 |
简单的a+b (C语言代码)浏览:720 |
哥德巴赫曾猜测 (C语言代码)浏览:1150 |
C语言程序设计教程(第三版)课后习题10.7 (C语言代码)浏览:998 |
字符串问题 (C语言代码)浏览:1636 |
用筛法求之N内的素数。 (C语言代码)浏览:891 |
C语言程序设计教程(第三版)课后习题7.2 (C语言代码)浏览:570 |
C语言程序设计教程(第三版)课后习题9.6 (C语言代码)浏览:388 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:536 |
盐水的故事 (C语言代码)浏览:1605 |