2 条题解

  • 0
    @ 2025-8-27 13:20:06

    活爹题摆烂了

    a=int(input())
    b=int(input())
    print(a+b)
    print(a-b)
    print(a*b)
    print(a//b)
    
    • 0
      @ 2025-8-27 11:32:00

      累死

      #include <iostream>
      #include <string>
      #include <algorithm>
      using namespace std;
      string jia(string sa,string sb){
          int a[114514]={},b[114514]={},c[228228]={};
          reverse(sa.begin(),sa.end());
          reverse(sb.begin(),sb.end());
          for(int i = 0;i<sa.size();i++)a[i]=sa[i]-'0';
          for(int i = 0;i<sb.size();i++)b[i]=sb[i]-'0';
          int len=max(sa.size(),sb.size());
          for(int i = 0;i<sa.size();i++){
              c[i]+=a[i]+b[i];
              c[i+1]+=c[i]/10;
              c[i]%=10;
          }
          string ans="";
          if(c[len])len++;
          while(c[len]==0&&len>0)len--;
          for(int i = 0;i<=len;i++)ans+=(c[i]+'0');
          reverse(ans.begin(),ans.end());
          return ans;
      }
      string sub(string sa, string sb) {
          int a[999]={},b[999]={},c[999]={};
          if(sa.size()<sb.size()||sa.size()==sb.size()&&sa<sb){
              swap(sa,sb);
              cout<<'-';
          }
          reverse(sa.begin(),sa.end());
          reverse(sb.begin(),sb.end());
          for(int i = 0;i<sa.size();i++)a[i]=sa[i]-'0';
          for(int i = 0;i<sb.size();i++)b[i]=sb[i]-'0';
          int len=max(sa.size(),sb.size());
          for(int i = 0;i<len;i++){
              c[i]+=a[i]-b[i];
              if(c[i]<0){
                  c[i+1]-=1;
                  c[i]+=10;
              }
          }
          while(c[len]==0&&len>=1)len--;
          string ans="";
          for(int i = len;i>=0;i--)ans+=c[i]+'0';
          return ans;
      }
      string add(string sa,string sb){
          int a[114514]={},b[114514]={},c[228228]={};
          reverse(sa.begin(),sa.end());
          reverse(sb.begin(),sb.end());
          for(int i = 0;i<sa.size();i++)a[i]=sa[i]-'0';
          for(int i = 0;i<sb.size();i++)b[i]=sb[i]-'0';
          int len=sa.size()+sb.size();
          for(int i = 0;i<sa.size();i++){
              for(int j = 0;j<sb.size();j++){
                  c[i+j]+=a[i]*b[j];
                  c[i+j+1]+=c[i+j]/10;
                  c[i+j]%=10;
              }
          }
          string ans="";
          if(c[len])len++;
          while(c[len]==0&&len>0)len--;
          for(int i = 0;i<=len;i++)ans+=(c[i]+'0');
          reverse(ans.begin(),ans.end());
          return ans;
      }
      int delPreZero(int x[], int xLen){
          int i=xLen;
          
          while(x[i-1]==0 && i>1){
              i--;
          }
          
          return i;
      }
      void printArr(int x[], int xLen){
          for(int i=xLen-1; i>=0; i--){
              cout << x[i];
          }
          cout << endl;
      }
      bool compare(int x[], int y[], int xLen, int yLen){
          if(xLen < yLen){
              return false;
          }
          if(xLen == yLen){
              for(int i=xLen-1; i>=0; i--){
                  if(x[i] > y[i]){
                      return true;
                  }
                  if(x[i] < y[i]){
                      return false;
                  }
              }
              return true;
          }
          return true;
      }
      int sub(int x[], int y[], int z[], int xLen, int yLen){
          int zLoc = xLen - yLen ;
          for(int i=1; i<=yLen; i++){
              if(x[xLen-i] > y[yLen-i])
                  break;
              if(x[xLen-i] < y[yLen-i]){
                  zLoc--;
                  break;
              }           
          }
          if(zLoc<0) 
              return xLen;
          for(int i=zLoc,j=0; i<xLen && j<yLen; i++,j++){
              while(x[i] < y[j]){
                  x[i+1]--;
                  x[i] += 10;
              }
              x[i] -= y[j];
          }
          z[zLoc]++;
          while(x[xLen-1]==0)
              xLen--;
          if(xLen <= 0)
              xLen = 1;
          return xLen;
      } 
      int main() {
          string num1, num2;
          cin >> num1 >> num2;
          string suma = jia(num1, num2);
          string sumb = sub(num1,num2);
          string sumc = add(num1,num2);
          cout << suma << endl;
          cout << sumb << endl;
          cout <<sumc<<endl;
          int a[301]={0}, b[301]={0}, c[301]={0};
          int aLen = 0, bLen = 0, cLen = 1, maxLen = 0;
          int i;
          aLen = num1.size();
          bLen = num2.size();
          for(i=0; i<aLen; i++){
              a[i] = num1[aLen-1-i] - '0';
          }
          for(i=0; i<bLen; i++){
              b[i] = num2[bLen-1-i] - '0';
          }
          aLen = delPreZero(a, aLen);
          bLen = delPreZero(b, bLen);
          cLen = aLen - bLen + 1;
          while(compare(a, b, aLen, bLen)){
              aLen = sub(a, b, c, aLen, bLen);
          }
          if(cLen < 1){
              cLen = 1;
          }
          cLen = delPreZero(c, cLen);
          printArr(c, cLen);
          return 0;
      }
      
      • 1

      信息

      ID
      3356
      时间
      1000ms
      内存
      256MiB
      难度
      4
      标签
      递交数
      24
      已通过
      7
      上传者