2 solutions

  • 1
    @ 2024-12-14 18:55:02

    py3题解:

    a=int(input())
    b=int(input())
    print(a+b)
    print("/n")
    print(a-b)
    print("/n")
    print(a*b)
    print("/n")
    print(a/b)
    print("/n")
    

    不保证对,仅供参考!!!

    • 0
      @ 2024-12-10 23:27:11

      C++ :

      #include<iostream>
      #include<algorithm>
      #include<string>
      #include<cctype>
      using namespace std;
      const int N(1005);
      int a[N],b[N],c[N+N],d[N];
      string s;
      //ifstream cin("input.txt");
      //ofstream cout("output.txt");
      void zhuan(string s,int *c);
      bool bigger(int *a,int *b);
      void add(int *a,int *b,int *c);
      void sub(int *a,int *b,int *c);
      void mul(int *a,int *b,int *c);
      void ch10(int *a);  //除法用 
      void jian(int *a,int *b);//除法用 
      void div(int *a,int *b,int *c);
      void output(int *c);
      int main()
      {
          while (cin>>s)
          {
              fill(a,a+N,0);fill(b,b+N,0);fill(c,c+N,0);fill(d,d+N,0);
              int p,len;
              for (p=0,len=s.size();p<len;p++)
                  if (!isdigit(s[p]))
                      break;
              zhuan(s.substr(0,p),a);
              zhuan(s.substr(p+1,len-p-1),b);        
              switch (s[p])
              {
                  case '+': add(a,b,c); break;
                  case '-': if (bigger(a,b)) sub(a,b,c);
                            else { cout<<"-"; sub(b,a,c); }  break; 
                  case '*': mul(a,b,c); break;
                  case '/': div(a,b,c); break;
              }
              output(c);
          }
          return 0;
      }
      void zhuan(string s,int *c)
      {
          c[0]=s.size();
          for (int i=1;i<=c[0];i++)
              c[i]=s[c[0]-i]-'0';  
      }
      bool bigger(int *a,int *b)
      {
          if (a[0]!=b[0]) return a[0]>b[0];
          for (int i=a[0];i>0;i--)
              if (a[i]!=b[i]) return a[i]>b[i];
          return true;
      } 
      void add(int *a,int *b,int *c)
      {
          c[0]=max(a[0],b[0]);
          for (int i=1;i<=c[0];i++)
          {
              c[i]+=a[i]+b[i];
              c[i+1]+=c[i]/10;
              c[i]%=10;
          }
          if (c[c[0]+1]) c[0]++;
      }
      void sub(int *a,int *b,int *c)
      {
          c[0]=a[0];
          for (int i=1;i<=a[0];i++)
          {
              c[i]+=a[i]-b[i];
              if (c[i]<0) c[i]+=10,c[i+1]--;
          }
          while (c[0]>1&&c[c[0]]==0) c[0]--;
      }
      void mul(int *a,int *b,int *c)
      {
          c[0]=a[0]+b[0]-1;
          for (int i=1;i<=a[0];i++)
              for (int j=1;j<=b[0];j++)        
                  c[i+j-1]+=a[i]*b[j];
          for (int i=1;i<=a[0]+b[0]-1;i++)
          {
              c[i+1]+=c[i]/10;
              c[i]%=10;
          }
          if (c[c[0]+1]) c[0]++;
      }                      
      void ch10(int *a)  //除法用 
      {    
          if (a[a[0]]==0) return;
          for (int i=a[0];i>0;i--)
              a[i+1]=a[i];
          a[1]=0;
          a[0]++;      
      }
      void jian(int *a,int *b)  //a-=b 除法用 
      {    
          for (int i=1;i<=a[0];i++)
          {
              a[i]-=b[i];
              if (a[i]<0) a[i]+=10,a[i+1]--;
          }
          while (a[0]>1&&a[a[0]]==0) a[0]--;
      }
      void div(int *a,int *b,int *c)  //高精度除法  c:商  d:余数 
      {
          d[0]=1; d[1]=0;  c[0]=a[0];
          for (int i=a[0];i>0;i--)
          {
              ch10(d);
              d[1]=a[i];
              while (bigger(d,b))
              {
                  jian(d,b);
                  c[i]++;
              }
          }
          while (c[c[0]]==0&&c[0]>1) c[0]--;
      }
      void output(int *c)
      {
          for (int i=c[0];i>0;i--) cout<<c[i];
          cout<<endl;
      }
      
      
      
      • 1

      Information

      ID
      594
      Time
      1000ms
      Memory
      128MiB
      Difficulty
      10
      Tags
      # Submissions
      5
      Accepted
      0
      Uploaded By