我试图以10的权力实施bignum除法。具体来说,这是一个kattis问题:https://open.kattis.com/problems/divideby100
我相信我的答案是正确的,但我的时间限制超出了警告。我知道这是由于我一直使用的插入功能。我的问题是,什么,如果有的话,更快的替代插入?或者我是疯了,只是将输入视为字符串而错误地解决了这个问题?
#include <cstdlib>
#include <iostream>
#include <vector>
#include <stdio.h>
#include <string>
#include <algorithm>
using namespace std;
int main(){
string N;
string M;
getline(cin, N);
getline(cin, M);
long long MSize = M.size();
long long NSize = N.size();
long long zeroesInM = MSize - 1;
if(NSize >= MSize){
N.insert(NSize - zeroesInM, ".");
NSize++;
}else{
long long zeroesInN = N.size() - 1;
for(long long i = 0; i < zeroesInM - zeroesInN - 1; i++){
N.insert(0, "0");
NSize++;
}
N.insert(0, ".");
N.insert(0, "0");
NSize += 2;
}
long long numTrailingZeros = NSize;
while (N[numTrailingZeros - 1] == '0'){
numTrailingZeros--;
}
numTrailingZeros = NSize - numTrailingZeros;
N.erase(NSize-numTrailingZeros, numTrailingZeros);
NSize -= numTrailingZeros + 1;
if(N[NSize] == '.'){
N.erase(NSize);
}
cout << N << endl;
return 0;
}