2 条题解

  • 0
    @ 2024-4-5 8:19:47

    c++

    #include <cstring>
    #include <iostream>
    const int maxn=1000;using namespace std;class unlimit_num{friend istream& operator>>(istream&,unlimit_num&);friend ostream& operator<<(ostream&,const unlimit_num&);friend unlimit_num operator+(const unlimit_num&,const unlimit_num&);friend unlimit_num operator*(const unlimit_num&,const unlimit_num&);friend unlimit_num operator*(const unlimit_num&,int);friend unlimit_num operator-(const unlimit_num&,const unlimit_num&);friend unlimit_num operator/(const unlimit_num&,const unlimit_num&);friend unlimit_num operator%(const unlimit_num&,const unlimit_num&);friend bool operator<(const unlimit_num&,const unlimit_num&);friend bool operator>(const unlimit_num&,const unlimit_num&);friend bool operator<=(const unlimit_num&,const unlimit_num&);friend bool operator>=(const unlimit_num&,const unlimit_num&);friend bool operator==(const unlimit_num&,const unlimit_num&);friend bool operator!=(const unlimit_num&,const unlimit_num&);private:int len,s[maxn];public:unlimit_num(){memset(s,0,sizeof(s));len=1;}unlimit_num operator=(const char* num){int i=0,ol;ol=len=strlen(num);while(num[i++]=='0'&&len>1)len--;memset(s,0,sizeof(s));for(i=0;i<len;i++)s[i]=num[ol-i-1]-'0';return *this;}unlimit_num operator=(int num){char s[maxn];sprintf(s,"%d",num);*this=s;return *this;}unlimit_num(int num){*this=num;}unlimit_num(const char* num){*this=num;}string str() const{int i;string res="";for(i=0;i<len;i++)res=char(s[i]+'0')+res;if(res=="")res="0";return res;}};bool operator<(const unlimit_num& a,const unlimit_num& b){int i;if(a.len!=b.len)return a.len<b.len;for(i=a.len-1;i>=0;i--)if(a.s[i]!=b.s[i])return a.s[i]<b.s[i];return false;}bool operator>(const unlimit_num& a,const unlimit_num& b){return b<a;}bool operator<=(const unlimit_num& a,const unlimit_num& b){return !(a>b);}bool operator>=(const unlimit_num& a,const unlimit_num& b){return !(a<b);}bool operator!=(const unlimit_num& a,const unlimit_num& b){return a<b||a>b;}bool operator==(const unlimit_num& a,const unlimit_num& b){return !(a<b||a>b);}unlimit_num operator+(const unlimit_num& a,const unlimit_num& b){int i,max=(a.len>b.len?a.len:b.len),t,c;unlimit_num sum;sum.len=0;for(i=0,c=0;c||i<max;i++){t=c;if(i<a.len)t+=a.s[i];if(i<b.len)t+=b.s[i];sum.s[sum.len++]=t%10;c=t/10;}return sum;}unlimit_num operator*(const unlimit_num& a,const unlimit_num& b){int i,j;unlimit_num res;for(i=0;i<a.len;i++){for(j=0;j<b.len;j++){res.s[i+j]+=(a.s[i]*b.s[j]);res.s[i+j+1]+=res.s[i+j]/10;res.s[i+j]%=10;}}res.len=a.len+b.len;while(res.s[res.len-1]==0&&res.len>1)res.len--;if(res.s[res.len])res.len++;return res;}unlimit_num operator*(const unlimit_num& a,int b){int i,t,c=0;unlimit_num res;for(i=0;i<a.len;i++){t=a.s[i]*b+c;res.s[i]=t%10;c=t/10;}res.len=a.len;while(c!=0){res.s[i++]=c%10;c/=10;res.len++;}return res;}unlimit_num operator-(const unlimit_num& a,const unlimit_num& b){unlimit_num res;int i,len=(a.len>b.len)?a.len:b.len;for(i=0;i<len;i++){res.s[i]+=a.s[i]-b.s[i];if(res.s[i]<0){res.s[i]+=10;res.s[i+1]--;}}while(res.s[len-1]==0&&len>1)len--;res.len=len;return res;}unlimit_num operator/(const unlimit_num& a,const unlimit_num& b){int i,len=a.len;unlimit_num res,f;for(i=len-1;i>=0;i--){f=f*10;f.s[0]=a.s[i];while(f>=b){f=f-b;res.s[i]++;}}while(res.s[len-1]==0&&len>1)len--;res.len=len;return res;}unlimit_num operator%(const unlimit_num& a,const unlimit_num& b){int i,len=a.len;unlimit_num res,f;for(i=len-1;i>=0;i--){f=f*10;f.s[0]=a.s[i];while(f>=b){f=f-b;res.s[i]++;}}return f;}unlimit_num& operator+=(unlimit_num& a,const unlimit_num& b){a=a+b;return a;}unlimit_num& operator-=(unlimit_num& a,const unlimit_num& b){a=a-b;return a;}unlimit_num& operator*=(unlimit_num& a,const unlimit_num& b){a=a*b;return a;}unlimit_num& operator/=(unlimit_num& a,const unlimit_num& b){a=a/b;return a;}unlimit_num& operator++(unlimit_num& a){a=a+1;return a;}unlimit_num& operator--(unlimit_num& a){a=a-1;return a;}istream& operator>>(istream &in,unlimit_num& x){string s;in>>s;x=s.c_str();return in;}ostream& operator<<(ostream &out,const unlimit_num& x){out<<x.str();return out;}int main(){unlimit_num a,b;cin>>a>>b;cout<<b%a;return 0;}
    
    
    • 0
      @ 2024-2-9 14:12:21
      
      #include <cstring>
      #include <iostream>
      const int maxn=1000;using namespace std;class unlimit_num{friend istream& operator>>(istream&,unlimit_num&);friend ostream& operator<<(ostream&,const unlimit_num&);friend unlimit_num operator+(const unlimit_num&,const unlimit_num&);friend unlimit_num operator*(const unlimit_num&,const unlimit_num&);friend unlimit_num operator*(const unlimit_num&,int);friend unlimit_num operator-(const unlimit_num&,const unlimit_num&);friend unlimit_num operator/(const unlimit_num&,const unlimit_num&);friend unlimit_num operator%(const unlimit_num&,const unlimit_num&);friend bool operator<(const unlimit_num&,const unlimit_num&);friend bool operator>(const unlimit_num&,const unlimit_num&);friend bool operator<=(const unlimit_num&,const unlimit_num&);friend bool operator>=(const unlimit_num&,const unlimit_num&);friend bool operator==(const unlimit_num&,const unlimit_num&);friend bool operator!=(const unlimit_num&,const unlimit_num&);private:int len,s[maxn];public:unlimit_num(){memset(s,0,sizeof(s));len=1;}unlimit_num operator=(const char* num){int i=0,ol;ol=len=strlen(num);while(num[i++]=='0'&&len>1)len--;memset(s,0,sizeof(s));for(i=0;i<len;i++)s[i]=num[ol-i-1]-'0';return *this;}unlimit_num operator=(int num){char s[maxn];sprintf(s,"%d",num);*this=s;return *this;}unlimit_num(int num){*this=num;}unlimit_num(const char* num){*this=num;}string str() const{int i;string res="";for(i=0;i<len;i++)res=char(s[i]+'0')+res;if(res=="")res="0";return res;}};bool operator<(const unlimit_num& a,const unlimit_num& b){int i;if(a.len!=b.len)return a.len<b.len;for(i=a.len-1;i>=0;i--)if(a.s[i]!=b.s[i])return a.s[i]<b.s[i];return false;}bool operator>(const unlimit_num& a,const unlimit_num& b){return b<a;}bool operator<=(const unlimit_num& a,const unlimit_num& b){return !(a>b);}bool operator>=(const unlimit_num& a,const unlimit_num& b){return !(a<b);}bool operator!=(const unlimit_num& a,const unlimit_num& b){return a<b||a>b;}bool operator==(const unlimit_num& a,const unlimit_num& b){return !(a<b||a>b);}unlimit_num operator+(const unlimit_num& a,const unlimit_num& b){int i,max=(a.len>b.len?a.len:b.len),t,c;unlimit_num sum;sum.len=0;for(i=0,c=0;c||i<max;i++){t=c;if(i<a.len)t+=a.s[i];if(i<b.len)t+=b.s[i];sum.s[sum.len++]=t%10;c=t/10;}return sum;}unlimit_num operator*(const unlimit_num& a,const unlimit_num& b){int i,j;unlimit_num res;for(i=0;i<a.len;i++){for(j=0;j<b.len;j++){res.s[i+j]+=(a.s[i]*b.s[j]);res.s[i+j+1]+=res.s[i+j]/10;res.s[i+j]%=10;}}res.len=a.len+b.len;while(res.s[res.len-1]==0&&res.len>1)res.len--;if(res.s[res.len])res.len++;return res;}unlimit_num operator*(const unlimit_num& a,int b){int i,t,c=0;unlimit_num res;for(i=0;i<a.len;i++){t=a.s[i]*b+c;res.s[i]=t%10;c=t/10;}res.len=a.len;while(c!=0){res.s[i++]=c%10;c/=10;res.len++;}return res;}unlimit_num operator-(const unlimit_num& a,const unlimit_num& b){unlimit_num res;int i,len=(a.len>b.len)?a.len:b.len;for(i=0;i<len;i++){res.s[i]+=a.s[i]-b.s[i];if(res.s[i]<0){res.s[i]+=10;res.s[i+1]--;}}while(res.s[len-1]==0&&len>1)len--;res.len=len;return res;}unlimit_num operator/(const unlimit_num& a,const unlimit_num& b){int i,len=a.len;unlimit_num res,f;for(i=len-1;i>=0;i--){f=f*10;f.s[0]=a.s[i];while(f>=b){f=f-b;res.s[i]++;}}while(res.s[len-1]==0&&len>1)len--;res.len=len;return res;}unlimit_num operator%(const unlimit_num& a,const unlimit_num& b){int i,len=a.len;unlimit_num res,f;for(i=len-1;i>=0;i--){f=f*10;f.s[0]=a.s[i];while(f>=b){f=f-b;res.s[i]++;}}return f;}unlimit_num& operator+=(unlimit_num& a,const unlimit_num& b){a=a+b;return a;}unlimit_num& operator-=(unlimit_num& a,const unlimit_num& b){a=a-b;return a;}unlimit_num& operator*=(unlimit_num& a,const unlimit_num& b){a=a*b;return a;}unlimit_num& operator/=(unlimit_num& a,const unlimit_num& b){a=a/b;return a;}unlimit_num& operator++(unlimit_num& a){a=a+1;return a;}unlimit_num& operator--(unlimit_num& a){a=a-1;return a;}istream& operator>>(istream &in,unlimit_num& x){string s;in>>s;x=s.c_str();return in;}ostream& operator<<(ostream &out,const unlimit_num& x){out<<x.str();return out;}int main(){unlimit_num a,b;cin>>a>>b;cout<<b%a;return 0;}
      
      ```
      
      ```
      • 1

      信息

      ID
      714
      时间
      1000ms
      内存
      128MiB
      难度
      9
      标签
      递交数
      11
      已通过
      5
      上传者