[R19B]乘法
需要一个好的高精度乘法模版
// 110. [R19B]乘法.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
/*
[R19B]乘法
原题地址:https://bs.daimayuan.top/p/110
题目描述
给定非负整数 a,b,令 X = 2^a * 5^b,输出 X。
2^a 表示有 a 个 2 相乘,例如 2^3 = 2 * 2 * 2 = 8。 
5^b 表示有 b 个 5 相乘,例如 5^2 = 5 * 5 = 25。
输入格式
输入包含多组测试数据。
第一行包含一个正整数 T,表示测试数据的组数。
接下来 T 行,每行包含两个正整数 a 和 b,其含义如题目所述。
输出格式
输出 T 行,其中第 i 行包含一个整数,表示第 i 组数据中 X = 2^a * 5^b 的值。
样例输入
3
3 2
4 4
2 5
样例输出
200
10000
12500
样例解释
对于第一组测试数据,2^3 = 8,5^2 = 25,8 * 25 = 200。
对于第二组测试数据,2^4 = 16,5^4 = 625,16 * 625 = 10000。
对于第三组测试数据,2^2 = 4,5^5 = 3125,4 * 3125 = 12500。
数据范围与提示
对于 20% 的数据,1 <= a,b <= 10。
对于 100% 的数据,1 <= T <= 100,1 <= a,b <= 1000,且 a 和 b 的差值不超过 5(即 |a-b| <= 5)。
*/
#include <iostream>
#include <vector>
using namespace std;
//需要一个好的高精度乘法模版
void mul(vector<int>& num, int x) {
    int c = 0;
    for (int i = 0; i < num.size(); ++i) {
        long long cur = 1LL * num[i] * x + c;
        num[i] = cur % 10;
        c = cur / 10;
    }
    while (c) {
        num.push_back(c % 10);
        c /= 10;
    }
}
int main() {
    int T;
    cin >> T;
    while (T--) {
        int a, b;
        cin >> a >> b;
        vector<int> result(1, 1);
        for (int i = 0; i < a; ++i) mul(result, 2);
        for (int i = 0; i < b; ++i) mul(result, 5);
        for (int i = result.size() - 1; i >= 0; --i) cout << result[i];
        cout << endl;
    }
    return 0;
}
    作 者: itdef 
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
欢迎转帖 请保持文本完整并注明出处
技术博客 http://www.cnblogs.com/itdef/
B站算法视频题解
https://space.bilibili.com/18508846
qq 151435887
gitee https://gitee.com/def/
欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
如果觉得不错,欢迎点赞,你的鼓励就是我的动力
                    
                
                
            
        
浙公网安备 33010602011771号