java的的高精度除法_高精度除法与求余C++版和java版

博客给出了高精度除法与求余的C++代码,可处理除数与被除数达100000位的情况。代码包含输入被除数和除数后进行整除和求余的操作,利用除法性质实现计算,并给出了读取和输出大数字的函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

高精度除法与求余c++版(除数与被除数100000位):

代码如下:

//高精度除法与求余

#include

#include

#include

using namespace std;

const int M=1e5+5;

char s[M],result[M];

int main()

{

long long mod,divis;

int n,i,k,flag,len;

while(cin>>s>>n) //输入被除数s以及除数n

{

len=strlen(s);

divis=flag=0;

for(i=k=0; i

{

divis=divis*10+s[i]-'0';

if(divis>=n&&!flag) //利用除法性质,当divs大于除数n时,开始进行整除

{

result[k++]=divis/n+'0';

divis=divis%n; //除法性质,余数*10加下一位的数字便是新的被除数

flag=1;

}

else if(flag)

{

result[k++]=divis/n+'0';

divis=divis%n;

}

}

if(!k) result[k++]='0';

result[k]='\0';

cout<

mod=0;

for(i=0; i

{

mod=mod*10+s[i]-'0';

mod=mod%n; //利用除法性质,其实质是每次都是一个最多比n多一位的mod对n进行求余

}

cout<

}

return 0;

}

#include

#include

#include

#include

using namespace std;

#define DIGIT4

#define DEPTH10000

#define MAX 30000

typedef int bignum_t[MAX+1];

int read(bignum_t a,istream& is=cin){

char buf[MAX*DIGIT+1],ch;

int i,j;

memset((void*)a,0,sizeof(bignum_t));

if (!(is>>buf))return 0;

for (a[0]=strlen(buf),i=a[0]/2-1;i>=0;i--)

ch=buf[i],buf[i]=buf[a[0]-1-i],buf[a[0]-1-i]=ch;

for (a[0]=(a[0]+DIGIT-1)/DIGIT,j=strlen(buf);j

for (i=1;i<=a[0];i++)

for (a[i]=0,j=0;j

a[i]=a[i]*10+buf[i*DIGIT-1-j]-'0';

for (;!a[a[0]]&&a[0]>1;a[0]--);

return 1;

}

void write(const bignum_t a,ostream& os=cout){

int i,j;

for (os<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值