题意:
一古戈尔(10100)是一个巨大的数字:一后面跟着一百个零。100100则更是无法想像地巨大:一后面跟着两百个零。然而,尽管这两个数如此巨大,各位数字和却都只有1。
若a, b < 100,所有能表示为ab的自然数中,最大的各位数字和是多少?
思路:
一道考验基操的题——大数乘法。打一遍当热热手~
代码:
#include <stdio.h>
#include <string.h>
#include <vector>
#include <math.h>
#include <algorithm>
#include <stack>
#define ll long long
using namespace std;
void mul (int *num, int val) {
for (int i = 1; i <= num[0]; i++) {
num[i] *= val;
}
for (int i = 1; i <= num[0]; i++) {
if (num[i] >= 10) {
num[i + 1] += num[i] / 10;
num[i] %= 10;
}
}
while(num[num[0] + 1]) {
num[0] ++;
num[num[0] + 1] = num[num[0]] / 10;
num[num[0]] %= 10;
}
}
int main () {
int mx = 0;
for (int i = 1; i <= 100; i++) {
int num[205] = {1, 1};
for (int j = 1; j <= 100; j++) {
int k = 0;
mul(num, i);
for (int p = 1; p <= num[0]; p++) {
k += num[p];
}
if (k > mx) {
mx = k;
}
}
}
printf("%d\n", mx);
return 0;
}
如果有写的不对或者不全面的地方 可通过主页的联系方式进行指正,谢谢