zoukankan      html  css  js  c++  java
  • P2412高精度减法

    传送门

    因为忘了带书回家,所以因为这道题我卡了半小时所以写篇博客“纪念”下

    高精度减法中,如果被减数比减数小,就要用减数减去被减数。接下来的判断就是本题的核心。直接用strcmp是不行的,例如100与99,用strcmp就是99大,所以我们还要再看长度。这里要特别注意一点,下面的代码是不行的。

    if(strcmp(s,k)>=0||lena>lenb)
    

    所以判断这里我们就要分类讨论两次(第一次比较长度,第二次用strcmp)

    代码如下(原谅蒟蒻的一匹的我代码长) 

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    using namespace std;
    char s[10001],k[10001];
    int a[10000001],b[100001],c[10000001];
    void j(int,int,int);
    void jf(int lena,int lenb,int lenc)
    {if(lena>lenb)
      {
        while(lenc<=lena||lenc<=lenb)
        { if(a[lenc]<b[lenc])
          {a[lenc+1]--;a[lenc]+=10;}
          c[lenc]=a[lenc]-b[lenc];
          lenc++;  
        }while(c[lenc]==0)lenc--;
       for(int i=lenc;i>=1;i--)
       cout<<c[i];
      }
      if(lena==lenb)
       {if(strcmp(s,k)>=0)
        {while(lenc<=lena||lenc<=lenb)
        { if(a[lenc]<b[lenc])
          {a[lenc+1]--;a[lenc]+=10;}
          c[lenc]=a[lenc]-b[lenc];
          lenc++;  
        }while(c[lenc]==0)lenc--;
       for(int i=lenc;i>=1;i--)
       cout<<c[i];
        }
        else j(lena,lenb,lenc);
       }
     if(lena<lenb)
     j( lena, lenb, lenc);
    }
    void j(int lena,int lenb,int lenc)
    {while(lenc<=lena||lenc<=lenb)
       { if(b[lenc]<a[lenc])
       {b[lenc+1]--;b[lenc]+=10;}
          c[lenc]=b[lenc]-a[lenc];
          lenc++;  
       }while(c[lenc]==0)lenc--;
       cout<<"-";
       for(int i=lenc;i>=1;i--)
       cout<<c[i];
     
    }
    int main()
    {int lena,lenb,lenc,t=0;
     scanf("%s",s);t++;
     scanf("%s",k);t++;
     lena=strlen(s);
     lenb=strlen(k);
     for(int i=0;i<=lena-1;i++)
     {a[lena-i]=s[i]-48;
     }
     for(int i=0;i<=lenb-1;i++)
     b[lenb-i]=k[i]-48;
     lenc=1;
    if(strcmp(s,k)!=0)jf(lena,lenb,lenc);
    else cout<<"0";
    }
  • 相关阅读:
    Flutter DraggableScrollableSheet 可滚动对象的容器
    Flutter 避免阻塞ui线程
    Android Kotlin 数据驱动模板
    ng mock服务器数据
    rxjs 常用的subject
    Flutter 在同一页面显示List和Grid
    dart2native 使用Dart 在macOS,Windows或Linux上创建命令行工具
    Flutter 创建透明的路由页面
    ng 发布组件库
    js实现单张或多张图片持续无缝滚动
  • 原文地址:https://www.cnblogs.com/lcez56jsy/p/10464101.html
Copyright © 2011-2022 走看看