char a[100005];
char dest[100005];
int n=3,k;
//数组是先存高位再往低位存的,如1011,a[0]=1,a[1]=0,a[2]=1,a[3]=1;
//a[]是被除数,n是除数
int divide(char a[],int l)
{
int q,p=0;
q=a[p++];
while(p<l) // l是数的位数
{
while(q<n) //取a[]的高位直到取出的数高于或等于n
{
q=q*10+a[p++];
if(p>=l)
break;
}
if(q>=n)
q%=n; //取余之后保存q留作后面运算
}
q%=n; //特殊情况如果位数为1
if(q==0)
return 1; //成功返回1
return 0;
}
void division(char * src,int n)
{
int len = strlen(src),i,t=0,s=0;
bool flag = true; //商是否有了第一个有效位,防止商首部一直出现0
for(i=0,k=0; i<len; i++)
{
t = s*10+(src[i]-48); //新余数
if(t/n>0 || t
【大数除法模板】判断能否整除+求整除后的商
最新推荐文章于 2022-01-09 15:54:45 发布
本文介绍了如何实现大数除法,包括判断能否被整除和计算整除后的商。通过读取高位到低位,逐位进行计算,使用取余和更新商的过程来完成除法操作。提供的divide函数可以检查除法是否能整除,division函数则输出整个除法过程的结果。
摘要由CSDN通过智能技术生成