Пример #1
0
	BigInt operator + (const BigInt &b)
	{
		BigInt r; r.len = max(len, b.len) + 1;
		for(int i = 1; i <= r.len; i++)
		{
			r.c[i] += c[i] + b.c[i];
			r.c[i+1] += r.c[i] / base;
			r.c[i] %= base;
		}
		r.Zero();
		return r;
	}
Пример #2
0
 BigInt operator / (int a)
 {
     BigInt res;
     res.len=len;
     for(int i=res.len;i>=1;i--)
     {
         res.c[i]+=c[i];
         res.c[i]/=a;
         if(i>1) res.c[i-1]+=c[i]%a*number;
     }
     res.Zero();
     return res;
 }
Пример #3
0
BigInt P(BigInt a,BigInt b)
{
	BigInt res;
	res.len=max(a.len,b.len)+1;
	for(int i=1;i<=res.len;i++)
	{
		res.c[i]+=a.c[i]+b.c[i];
		res.c[i+1]+=res.c[i]/100000;
		res.c[i]%=100000;
	}
	res.Zero();
	return res;
}
Пример #4
0
 BigInt operator + (BigInt a)
 {
     BigInt res;
     res.len=max(len,a.len)+1;
     for(int i=1;i<=res.len;i++)
     {
         res.c[i]+=c[i]+a.c[i];
         res.c[i+1]+=res.c[i]/number;
         res.c[i]%=number;
     }
     res.Zero();
     return res;
 }
Пример #5
0
	BigInt operator * (const BigInt &b)
	{
		BigInt r; r.len = len + b.len + 2;
		for(int i = 1; i <= len; i++)
		{
			for(int j = 1; j <= b.len; j++)
			{
				r.c[j+i-1] += c[i] * b.c[j];
			}
		}
		for(int i = 1; i <= r.len; i++)
		{
			r.c[i+1] += r.c[i] / base;
			r.c[i] %= base;
		}
		r.Zero();
		return r;
	}