高精除~~~

Posted on 2018-08-20 20:34  亦辰落  阅读(452)  评论(1编辑  收藏  举报

终于到高精除啦!!!

太令人开心了,我准备将高精除分为两个部分来讲

因为高精除中有高精除低精还有高精除高精

所以啊,这个先将高精除低精展现给大家

首先

因为是大整数除以小整数,所以我们运用的是按位相除法

做除法时,每一次的商都在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;
}//对就是除法

很像啊,只是这个没法进行大数据运算罢了。