<blockquote id="shwb3"><ruby id="shwb3"></ruby></blockquote>
  • <small id="shwb3"><strong id="shwb3"></strong></small>

      1. <big id="shwb3"></big>
        1. 首页 > 其他 > 详细

          高精除

          时间:2019-06-16 00:55:15      阅读:65      评论:0      收藏:0      [点我收藏+]

          标签:efi   ios   --   例子   std   一次   name   php   table   

          传送门:http://ybt.ssoier.cn:8088/problem_show.php?pid=1308

           

          【题目描述】

          高精除以高精,求它们的商和余数。

          【输入】

          输入两个低于300位的正整数。

          【输出】

          输出商和余数。

          【输入样例】

          1231312318457577687897987642324567864324567876543245671425346756786867867867
          1231312318767141738178325678412414124141425346756786867867867

          【输出样例】

          999999999748590
          179780909068307566598992807564736854549985603543237528310337



          被除数若为9位,除数为6位,那么把除数加两位进行高精度减法,每件一次商加上100(0的个数为被除数位减去除数位数-1)即可。

          例子:
          9745 / 3

          第一次 9745 300 减32次,余145 商 32*100
          第二次 145 30 减4次,余25 商 32*100+4*10
          第三次 25 3 减8次,余1 商 32*100+4*10+8*1







          code:




          #include<iostream>
          #include<cstring>
          #define N 310
          using namespace std;
          string a,b;
          int as[310],bs[310],ans[310],lena,lenb;
          void jian(){
              for(int i=0;i<lena;i++)as[i]-=bs[i];
              for(int i=0;i<lena;i++)
              {
                  if(as[i]<0){
                      as[i]+=10;
                      as[i+1]--;
                  }
              }
              while(as[lena-1]==0&&lena>0)lena--;
          }
          bool dx(){
              if(lena>lenb)return true;
              if(lena<lenb)return false;
              for(int i=lena-1;i>=0;i--){
                  if(as[i]>bs[i])return true;
                  if(as[i]<bs[i])return false;
              }
              return true;
          }
          void jy(int k)
          {
              if(k==0)k=1;
              if(k!=1)
              {
                  for(int i=lenb-1;i>=0;i--)
                  {   
                      bs[i+k-1]=bs[i];
                      bs[i]=0;
                  }
                  lenb+=k-1;
              }
              while(dx()==true){
                  jian();
                  ans[k-1]++;
                  int ls=k-1;
                  for(int i=k-1;i<=ls;i++)
                  {
                      if(ans[i]>9){
                          ans[i+1]++;
                          ans[i]-=10;
                          if(ans[i+1]>9)ls++;
                      }
                  }
              }
              if(k!=1)
              {
                  for(int i=k-1;i<lenb;i++)
                  {
                      bs[i-k+1]=bs[i];
                      bs[i]=0;
                  }
                  lenb-=k-1;
              }
          }
          int main(){
              cin>>a>>b;
              if(a==b){cout<<1<<endl<<0<<endl;return 0;}
              lena=a.size();
              lenb=b.size();
              for(int i=0;i<lena;i++)as[i]=a[lena-i-1]-0;
              for(int i=0;i<lenb;i++)bs[i]=b[lenb-i-1]-0;
              memset(ans,0,sizeof(ans));
              int k=lena-lenb;
              if(k<0){cout<<0<<endl<<a<<endl;return 0;}
              while(k>=0){
                  if(k==0&&dx()==false)break;
                  jy(k);
                  k=lena-lenb;
              }
              int h1=301,h2=301;
              while(ans[h1]==0&&h1>0)h1--;
              while(as[h2]==0&&h2>0)h2--;
              for(int i=h1;i>=0;i--)cout<<ans[i];
              cout<<endl;
              for(int i=h2;i>=0;i--)cout<<as[i];
              cout<<endl;
          }

          第一次写博客

          这题没看大佬的

          更优的做法实在想不到了

           

          高精除

          标签:efi   ios   --   例子   std   一次   name   php   table   

          原文:https://www.cnblogs.com/jzxnl/p/11029124.html

          (0)
          (0)
             
          举报
          评论 一句话评论(0
          登录后才能评论!
          ? 2014 bubuko.com 版权所有 鲁ICP备09046678号-4
          打开技术之扣,分享程序人生!
                       

          鲁公网安备 37021202000002号

          t6娱乐平台官方
          <blockquote id="shwb3"><ruby id="shwb3"></ruby></blockquote>
        2. <small id="shwb3"><strong id="shwb3"></strong></small>

            1. <big id="shwb3"></big>
              1. <blockquote id="shwb3"><ruby id="shwb3"></ruby></blockquote>
              2. <small id="shwb3"><strong id="shwb3"></strong></small>

                  1. <big id="shwb3"></big>