C#
#include <stdio.h>
int main(){
int mul[400] = {0};
mul[0] = mul[1] = 1;
for(int i =0;i < 1000; i++){
for(int j =1;j <= mul[0];j++){
mul[j] *= 2;
}
for(int j = 1;j <= mul[0]; j++){
if(mul[j] < 10) continue;
mul[j+1] += mul[j] / 10;
mul[j] %= 10;
mul[0] += (mul[0] == j);
}
}
printf("%d\n",mul[0]);//存放位数
int ans = 0;
for(int i = 1;i <= mul[0]; i++){
ans += mul[i];
}
printf("%d\n",ans);//各位数字之和
return 0;
}
JAVA
package exercise;
import java.math.BigInteger;
public class _幂的数字和 {
public static void main(String[] args) {
BigInteger num = new BigInteger("2");
for(int i=1;i<1000;i++) {
num = num.multiply(new BigInteger("2"));
}
System.out.println(num);
int sum = 0;
String str = num+"";
String[] str1 = str.split("");
for(int i=0;i<str1.length;i++) {
sum += Integer.parseInt(str1[i]);
}
System.out.println(sum);
}
}
结果:1366
num = 10715086071862673209484250490600018105614048117055336074437503883703510511249361224931983788156958581275946729175531468251871452856923140435984577574698574803934567774824230985421074605062371141877954182153046474983581941267398767559165543946077062914571196477686542167660429831652624386837205668069376