终于到高精除啦!!!
太令人开心了,我准备将高精除分为两个部分来讲
因为高精除中有高精除低精还有高精除高精
所以啊,这个先将高精除低精展现给大家
首先
因为是大整数除以小整数,所以我们运用的是按位相除法
做除法时,每一次的商都在0~9之内,每次求得的余数连接以后的若干位得到的新数被继续做除法。
因此在高精除法中还会涉及乘法和减法运算并且伴有移位处理。
为了简洁,运用0~9次循环减法取代商值。
好像可以直接上代码,
这个我找不到例题真是抱歉
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int Maxn=5005; char a[Maxn]; int b,x[Maxn],c[Maxn],y=0; int main() { memset(c,0,sizeof(c)); memset(x,0,sizeof(x)); gets(a); int lena=strlen(a); cin>>b; for(int i=0;i<lena;i++) x[i+1]=a[i]-‘0‘;//存储a数组 for(int i=1;i<=lena;i++)//这里就是按位相除 { c[i]=(y*10+x[i])/b; y=(y*10+x[i])%b; } int l=1; while(l<lena&&c[l]==0) l++;//删除前面的0 for(int i=l;i<=lena;i++) cout<<c[i]; return 0; }
其实和:
#include<iostream> #include<algorithm> using namespace std; int main(){ int a,b,c; cin>>a>>b; c=a/b; cout<<c; }//对就是除法
很像啊,只是这个没法进行大数据运算罢了。
原文地址:https://www.cnblogs.com/U58223-luogu/p/9507905.html
时间: 2024-10-09 17:34:35