问题标题: 酷町堂:高精度除法和求余

0
0

0
已采纳
赵朗
赵朗
高级光能
高级光能

e 高精度……

代码奉上:


//高精度除法与求余
#include<iostream>
#include<cstdio>
#include<cstring>
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<len; 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<<result<<endl;
 
 
        mod=0;
        for(i=0; i<len; i++)
        {
            mod=mod*10+s[i]-'0';
            mod=mod%n; //利用除法性质,其实质是每次都是一个最多比n多一位的mod对n进行求余
        }
        cout<<mod<<endl;
 
    }
    return 0;

 

赵朗在2020-03-26 20:52:47追加了内容

自己琢磨琢磨吧!

黄子澄

赵朗在2020-03-26 20:54:57追加了内容

反正不是我写的

我太难了~

我要回答