高精度除法acwing

    科技2022-07-12  117

    原题.

    #include <iostream> #include <cstdio> #include <cstring> #include <vector> #include <cstdlib> using namespace std; const int N = 1e5 + 10; int a[N]; typedef long long ll; int main(){ std::ios::sync_with_stdio(false); string s1; cin >> s1; ll s2,len; cin >> s2; len = s1.size(); for(int i = len -1 ; i >= 0; i--){ //将一个数字(以字符串的形式存储)如123456变成654321.数组a从下标为0开始一次存储654321 a[len - 1- i] = s1[i] - '0'; } vector<int> c; ll t = 0; for(int i = 0; i < len || t; i++){ if(i < len) t += a[i]*s2; c.push_back(t % 10);//将第一个数字的每一位 分别 与第二个数字相乘,将结果求余存进c中. t /= 10; } while(c.size() > 1 && c.back() == 0) c.pop_back(); for(int i = c.size() - 1; i >= 0; i--){ //注意 int i = c.size() - 1,之前犯了int i = len -1 的错误,将数组c中的元素从高位(最右边)开始打印。 cout << c[i]; } return 0; }
    Processed: 0.009, SQL: 8