#include <iostream>
#include <vector>
#include <string>
std::string multiply(const std::string& num1, const std::string& num2) {
int len1 = num1.size();
int len2 = num2.size();
std::vector<int> result(len1 + len2, 0);
// 反向遍历两个数字并相乘
for (int i = len1 - 1; i >= 0; --i) {
for (int j = len2 - 1; j >= 0; --j) {
int mul = (num1[i] - '0') * (num2[j] - '0');
int sum = mul + result[i + j + 1];
result[i + j + 1] = sum % 10; // 当前位
result[i + j] += sum / 10; // 进位
}
}
// 将结果转换为字符串
std::string product;
for (int num : result) {
if (!(product.empty() && num == 0)) { // 跳过前导零
product.push_back(num + '0');
}
}
return product.empty() ? "0" : product;
}
int sumOfDigits(const std::string& num) {
int sum = 0;
for (char digit : num) {
sum += digit - '0'; // 转换为整数并求和
}
return sum;
}
int main() {
std::string highPrecisionNum(100, '1'); // 生成100个'1'
std::string multiplier = "2023"; // 乘数
// 计算乘积
std::string product = multiply(highPrecisionNum, multiplier);
// 计算乘积的数字和
int digitSum = sumOfDigits(product);
// 输出结果
std::cout << "数字和为: " << digitSum << std::endl;
return 0;
}
奥数与C++小学四年级(第十三题 汤姆的密码)
猜你喜欢
转载自blog.csdn.net/weixin_60445850/article/details/143361999
今日推荐
周排行