小白月赛22 F: 累乘数字

F:累乘数字

考察点: 思维,高精度
坑点 : 模拟就 OK 

析题得侃:

如果你思维比较灵敏:直接输出这个数+ d 个 "00"就行了
当然,我还没有那么灵敏,只能用大数来搞了

关于高精度的各种板子,简单实现

Code:

#include <vector>
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
 
using namespace std;
 
int n,d;
 
int main(void) {
    vector<int> mul(vector<int> &A,int b);
    while(scanf("%d%d",&n,&d) != EOF) {
        vector<int>temp;
        while(n) {
            temp.push_back(n % 10);
            n = n / 10;
        }
//      reverse(temp.begin(),temp.end());
        for(int i = 1; i <= d; i ++) {
            temp = mul(temp,100);
        }
        for(int i = temp.size() - 1; i >= 0; i --) {
            cout << temp[i];
        }
        cout << endl;
    }
    return 0;
}
 
vector<int> mul(vector<int> &A,int b) {
    int t = 0;
    vector<int> C;
    for(int i = 0; i < A.size(); i ++) {   // 模拟乘法过程
        t += A[i] * b;
        C.push_back(t % 10);
        t /= 10;
    }
    while(t) {                             // 处理最后的那个数
        C.push_back(t % 10);
        t /= 10;
    }
    return C;
}
posted @ 2020-02-23 21:24  IceSwords  阅读(216)  评论(0编辑  收藏  举报