A04 高精度除法

A04 高精度算法 除法_哔哩哔哩_bilibili

 

P1480 A/B Problem - 洛谷

// 高精度 O(n)
#include<bits/stdc++.h>
using namespace std;

void div(string sa,int b){
  int m=sa.size();
  vector<int> a(m+1,0),c(m+1,0);
  for(int i=0; i<m; i++) a[i]=sa[m-1-i]-'0';
  
  long long t=0;
  for(int i=m-1; i>=0; i--){
    t=t*10+a[i];
    c[i]=t/b;
    t%=b;
  }
  while(!c[m] && m) m--;
  for(int i=m; ~i; i--) cout<<c[i]; 
}
int main(){ 
  string a; int b;
  cin>>a>>b;
  div(a,b);
  return 0;
}

 

// 高精度 O(n)
#include<bits/stdc++.h>
using namespace std;

struct HP{
  string s;
  HP(string x="0"):s(x){}; //构造
  const HP operator/(const int &b){ //重载/
    string sa=s,res;
    int m=sa.size();
    vector<int> a(m+1,0),c(m+1,0);
    for(int i=0; i<m; i++) a[i]=sa[m-1-i]-'0';
  
    long long t=0;
    for(int i=m-1; i>=0; i--){
      t=t*10+a[i];
      c[i]=t/b;
      t%=b;
    }
    while(!c[m] && m) m--; //去除前导零
    for(int i=m; i>=0; i--) res+=char(c[i]+'0');
    return HP(res);
  }
  friend istream& operator>>(istream &in,HP &t){ //重载>>
    in>>t.s;
    return in;
  }
  friend ostream& operator<<(ostream &out,const HP &t){ //重载<<
    out<<t.s;
    return out;
  }  
};

int main(){
  HP a; int b;
  cin>>a>>b;
  cout<<a/b;
  return 0;
}

 

P2005 A/B Problem II - 洛谷

P1932 A+B A-B A*B A/B A%B Problem - 洛谷

 

posted @ 2022-09-04 17:37  董晓  阅读(968)  评论(0)    收藏  举报