收集每位分别相乘相加
// #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; }