解析
2的1000次方超出了长整型的最大位数,可以将该数每一位放在数组里面,从前往后位数从低到高
每次乘2是从高位开始乘,设高位为a,如果a*2 >= 10, 向该元素位置后一位进位,如果该元素已经是最高位,则位数加1;
代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
int a[1000] = {0};
int i = 0;
int j = 0;
int k = 0;
int len = 1;
int temp;
a[0] = 1;
while(i < 1000)
{
for(j = len - 1; j >= 0; j--)
{
temp = a[j];
temp *= 2;
if(temp <10)
{
a[j] = temp;
}
else
{
a[j] = temp % 10;
a[j +1] =a[j+1] + temp / 10;
if(j + 1 == len)
len++;
for(k = j + 1; k < len - 1; k++)
{
if(a[k] > 10)
{
a[k] = a[k] % 10;
a[k + 1] = a[k + 1]+a[k] / 10;
if(k+1 == len )
len++;
}
else
break;
}
}
}
i++;
}
printf("len = %d\n", len);
for(i = len - 1; i >= 0; i--)
{
printf("%d", a[i]);
}
printf("\n");
return 0;
}