1 条题解

  • 0
    @ 2026-10-25 17:53:27

    思路

    两个不足300位正整数求商余;商可为0,长除逐位试商,余数须小于除数。

    参考程序(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    bool lessnum(string a,string b){return a.size()!=b.size()?a.size()<b.size():a<b;}string norm(string s){int i=0;while(i+1<(int)s.size()&&s[i]=='0')i++;return s.substr(i);}string sub(string a,string b){int borrow=0;for(int i=(int)a.size()-1,j=(int)b.size()-1;i>=0;i--,j--){int v=a[i]-'0'-borrow-(j>=0?b[j]-'0':0);borrow=v<0;if(borrow)v+=10;a[i]='0'+v;}return norm(a);}int main(){string a,b,q,rem="0";cin>>a>>b;a=norm(a);b=norm(b);for(char c:a){rem=norm(rem+c);int v=0;while(!lessnum(rem,b)){rem=sub(rem,b);v++;}q+=char('0'+v);}cout<<norm(q)<<'\n'<<rem<<'\n';}
    
    • 1

    信息

    ID
    1308
    时间
    1000ms
    内存
    64MiB
    难度
    普及
    标签
    递交数
    1
    已通过
    1
    上传者