📄 bignumber.h
字号:
int plus(__int64 *a,__int64 *b,int a1)//大数相加,a1代表分段数
{
int i;
int t=0;
for (i=0;i<a1;i++){
a[i]=a[i]+b[i]+t;
if (a[i]>=1000000000){
a[i]-=1000000000;
t=1;
}else t=0;
}
return t;
}
int multiply(__int64 *a,int b,int a1)
{
int i;
int t=0;
__int64 *c=new __int64[a1];
for (i=0;i<a1;i++){
c[i]=a[i]*b+t;
t=c[i]/1000000000;
c[i]-=(__int64)t*1000000000;
}
for(i=0;i<a1;i++)
a[i]=c[i];
delete c;
return t;
}
int divide(__int64 *a,int b,int a1)
{
int i;
int t=0;
__int64 *c=new __int64[a1];
for (i=a1-1;i>=0;i--){
c[i]=(a[i]+__int64(t)*1000000000)/b;
t=(a[i]-c[i]*b)%1000000000;
t=(t+1000000000)%1000000000;
}
for(i=0;i<a1;i++)
a[i]=c[i];
delete c;
return t;
}
int minus(__int64 *a,__int64 *b,int a1)//大数相减,a1代表分段数
{
int i;
int t=0;
for (i=0;i<a1;i++){
a[i]=a[i]-b[i]-t;
if (a[i]<0){
a[i]+=1000000000;
t=1;
}else t=0;
}
return t;
}
/*int multiply(long *a,long *b,int a1)//大数相减,a1代表分段数,相乘后的分段数要求小于a1
{
int i,j;
int t=0,s=0;
long *c=new long[a1];
long *d=new long[a1];
for (i=0;i<a1;i++)
d[i]=0;
for (i=0;i<a1;i++){
for(j=0;j<a1;j++){
c[j]=a[j]*b[i]+t;
t=c[j]/10000;
c[j]-=t*10000;
if(i+j<a1){
d[j+i]=c[j]+d[j+i]+s;
if(d[j+i]>=10000){
d[j+i]-=10000;
s=1;
}
}
}
if (s>0){delete c,d; return s;}
}
for(i=0;i<a1;i++)
a[i]=d[i];
delete c;
delete d;
return s;
}
int divide(long *a,long *b,int a1)//大数相除,a1代表分段数,被除数的分段数要求小于a1
{
int i,j,p;
long *c=new long[a1];
for (i=0;i<a1;i++)
c[i]=0;
long *d=new long[a1];
for (i=0;i<a1;i++)
d[i]=0;
for (j=a1-1;j>=0;j--){
while (p=minus(d,a,a1)==1){
if (c[j]==9999) break;
c[j]++;
for (i=0;i<a1;i++)
d[i]=b[i];
multiply(d,c,a1);
}
if(p==0)c[j]--;
minus(d,d,a1);
}
for(i=0;i<a1;i++)
a[i]=c[i];
delete c;
delete d;
return 0;
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -