解题思路:
注意事项:涉及高精度计算(用数组)
参考代码:
#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语言代码)浏览:664 |
C语言程序设计教程(第三版)课后习题6.3 (C++代码)浏览:949 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:562 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:463 |
1197求助浏览:627 |
矩阵转置 (C语言代码)浏览:782 |
生日日数 (C语言代码)浏览:1498 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:449 |
陶陶摘苹果2 (C++代码)浏览:537 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:445 |