收集每位分别相乘相加
// #include <cstdio>
// #include <cstring>
// //笨笨的方法
// //依次拆分出a的各位与b的各位相乘相加
// int main() {
// int a, b, a_digits[10], b_digits[10], i, j;
// memset(a_digits, -1, sizeof(a_digits));
// memset(b_digits, -1, sizeof(b_digits));
// while (scanf("%d%d", &a, &b) != EOF) {
// i = 0;
// while (a) {
// a_digits[i++] = a % 10;
// a /= 10;
// }
// j = 0;
// while (b) {
// b_digits[j++] = b % 10;
// b /= 10;
// }
// int sum = 0;
// for (int i = 0; a_digits[i] != -1; i++) {
// for (int j = 0; b_digits[j] != -1; j++) {
// sum += a_digits[i] * b_digits[j];
// }
// }
// printf("%d\n", sum);
// return 0;
// }
// }
#include <cstdio>
#include <vector>
using namespace std;
int main() {
int a, b;
while (scanf("%d%d", &a, &b) != EOF) {
vector<int> veca;
vector<int> vecb;
while (a) {
veca.push_back(a % 10);
a /= 10;
}
while (b) {
vecb.push_back(b % 10);
b /= 10;
}
int ans = 0;
// 收集每位时从低位开始,遍历时也从rbegin开始,也可以直接从begin开始,顺序不影响结果
for (auto it1 = veca.rbegin(); it1 != veca.rend(); it1++) {
for (auto it2 = vecb.rbegin(); it2 != vecb.rend(); it2++) {
ans += (*it1) * (*it2);
}
}
printf("%d\n", ans);
}
return 0;
}

京公网安备 11010502036488号