题目链接:16.Power digit sum
题意:
求2的1000次方的每一位之和
2^15 = 32768 and the sum of its digits is 3 + 2 + 7 + 6 + 8 = 26.
解题思路:
直接算肯定是超范围,所以,使用数组进行次方的模拟乘法运算
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 2500;
int a[maxn];
int k;
void power(int x, int y) {
k = 1;
for(int i = 0; i < y; i++) {
for(int j = 0; j < k; j++) {
a[j] = a[j] * x;
}
for(int j = 0; j < k; j++) {
a[j+1] += a[j] / 10; // 进位
a[j] = a[j] % 10;
}
while(a[k] != 0) {
k++;
}
}
}
int main() {
int n = 1000;
memset(a, 0, sizeof(a));
a[0] = 2;
power(2, n-1);
int ans = 0;
for(int i = 0; i < k; i++) {
ans += a[i];
}
cout << ans << endl;
return 0;
}
6万+



被折叠的 条评论
为什么被折叠?



