大整數除法
描述求兩個大的正整數相除的商。
輸入第1行是被除數,第2行是除數。每個數均不超過100位。
輸出一行,相應的商的整數部分
樣例輸入
2376
24樣例輸出
99題意描述:
計算位數不超過100位的兩個數的商(整數部分)
解題思路:
用減法從被除數上一次一次減去除數得到商
程式**:
#include
const int n=230;
char str1[n],str2[n];
int a[n],b[n],result[n];
#include
int substract(int *p1,int *p2,int l1,int l2);
void outputf(int *s);
int main()
for(j=0,i=l1-1;i>=0;i--)
a[j++]=str1[i]-'0';
for(j=0,i=l2-1;i>=0;i--)
b[j++]=str2[i]-'0';
l1=substract(a,b,l1,l2);//先減一次去除不夠減和剛好夠減的情況
if(l1<=0)
else
}memset(result,0,sizeof(result));
result[0]++;
n=l1-l2;//減過一次後的長度差
if(n<0)
else if(n>0)
}l2=l1;//經過之前的處理,除數和被除數長度相等
for(j=0;j<=n;j++) //依次去除高位補零後相減
}outputf(result);//輸出結果時記得處理進製
}return 0;}
int substract(int *p1,int *p2,int l1,int l2) }}
for(i=0;i
p1[i] -= p2[i];
if(p1[i]<0)
} for(i=l1-1;i>=0;i--)
if(p1[i])
return i+1;//返回長度加1
return 0;
}void output(int *s)
}for(i=n;i>=0;i--)
for(j=i;j>=0;j--)
printf("%d",s[j]);
printf("\n");
}
2737 大整數除法
描述求兩個大的正整數相除的商。輸入第1行是被除數,第2行是除數。每個數均不超過100位。輸出一行,相應的商的整數部分 樣例輸入 2376 24樣例輸出 99題意描述 計算位數不超過200的兩個大整數的商 解題思路 總體用減法來模擬除法,當然為了讓模擬更高效採用一定的方法。先將被除數和除數分別存進一維...
百練2737 大整數除法
計算兩個大整數相除的商。首先將字串逆序轉換成對應的整型陣列,然後基本思想是做減法,從被除數裡減去多少個除數,商就是多少。為了減的更快一些,可以先減去除數的10的ntimes倍數。如7564 23,先減去23的100倍,發現可以減3次,餘下646,於是商增加300。然後用646減去230,發現可以減2...
大整數除法
define maxint 1000 define max 200 int num1 max 10 int num2 max 10 unsigned int total max 10 int sub int a,int b int i 0 for a b i return i cstring big...