rt,目前只包括算法基础课里的
#include<bits/stdc++.h>
#define Int vector<int>
using namespace std;
const int base=1e9;
Int in(string s)
{
Int a;
for (int i=s.size()-1,v=0,j=0,t=1;i>=0;i--)
{
v+=(s[i]&15)*t,j++,t*=10;
if (j==9||!i) a.push_back(v),v=j=0,t=1;
}
return a;
}
Int add(Int a,Int b) //加
{
if (a.size()<b.size() ) return add(b,a);
Int c; int t=0;
for (int i=0;i<a.size();i++) {
t+=a[i]; if (i<b.size() ) t+=b[i];
c.push_back(t%base),t/=base;
}
if (t) c.push_back(t);
return c;
}
Int sub(Int a,Int b) //减
{
Int c;
for (int i=0,t=0;i<a.size();i++)
{
t=a[i]-t;
if (i<b.size() ) t-=b[i];
c.push_back( (t+base)%base);
t=t<0;
}
while (c.size()>1&&!c.back() ) c.pop_back();
return c;
}
Int mul(Int a,int b) //乘
{
Int c; long long t=0;
for (int i=0;i<a.size()||t;i++) {
if (i<a.size() ) t+=1ll*a[i]*b;
c.push_back(t%base),t/=base;
}
while (c.size()>1&&!c.back() ) c.pop_back();
return c;
}
Int div(Int a,int b,long long &r) //除
{
Int c; r=0;
for (int i=a.size()-1;i>=0;i--)
r=r*base+a[i],c.push_back(r/b),r%=b;
reverse(c.begin(),c.end() );
while (c.size()>1&&!c.back() ) c.pop_back();
return c;
}
bool lower(Int a,Int b) //小于
{
if (a.size()<b.size() ) return 1;
if (a.size()>b.size() ) return 0;
for (int i=a.size()-1;i>=0;i--)
if (a[i]<b[i]) return 1; else if (a[i]>b[i]) return 0;
return 0;
}
void print(Int a) {
reverse(a.begin(),a.end() ); printf("%d",a[0]);
for (int i=1;i<a.size();i++) printf("%09d",a[i]);
}
你这个能处理负数吗
太蒻了,不会/kel