#include <stdio.h>
int main()
{
int result[1000]={1};
int length=1;//有效位的长度
int x=0;
int carry=0;//进位用的
int sum=0;
for(int i=0;i<1000;i++)
{
for(int j=0;j<length;j++)
{
x= 2*result[j]+carry;
if(x>=10)
{
x-=10;
result[j]=x;
carry=1;
}else
{
result[j] =x;
carry=0;
}
}
if(carry!=0)
{
length++;
result[length-1]=1;
carry=0;
}
}
for(int k=0;k<length;k++)
{
sum+=result[k];
}
printf("%d",sum);
}
在上一个java版本的
import java.math.*;
class Oula16
{
public static void main(String[] args)
{
long sum=0;
long begin=System.currentTimeMillis();
BigInteger num=new BigInteger("2");
char[] chars=num.pow(1000).toString().toCharArray();
for(int x=0;x<chars.length;x++){
sum+=Character.digit(chars[x],10);
}
System.out.println(sum);
long now=System.currentTimeMillis();
System.out.println(now-begin+"毫秒");
}
}