x的y次方,大数存储

std::vector MultiSelf(const std::vector& value)
{
    std::vector result(value.size() + 1, 0);
    for (auto i = 0; i < value.size(); ++i) {
        auto temp = value[i] * 2;
        result[i] += temp % 10;
        result[i+1] += temp / 10;
    }
    if (result[value.size()] == 0) {
        result.erase(result.begin() + value.size());
    }
    return result;
}
std::string MyPower(int num, int times) 
{
    std::vector base;
    for (int i = 1; i <= times; ++i) {
        if (i == 1) {
            base.push_back(num); 
        } else {
            base = MultiSelf(base);
        }
    }
    std::reverse(base.begin(), base.end());
    std::string result;
    for (const auto& it : base) {
        result.append(1, '0' + it);
    }
    return result;
}

你可能感兴趣的:(x的y次方,大数存储)