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

    我现在终于知道 染色问题 这道题写高精度是为什么错了,太弱了!

     1 #include<iostream>
     2 #include<cstring>
     3 #include<fstream>
     4 using namespace std;
     5 ifstream fin("div.in");
     6 ofstream fout("div.out");
     7 
     8 string s1,s2;int la,a[250],lb,b[250],c[250],d[500],ans[250];
     9 
    10 void Print(int e[]){
    11      int i=249;
    12      while(e[i]==0&&i>0) i--;
    13      while(i>=0) fout<<e[i--];
    14      fout<<endl;//system("pause");
    15      return ; 
    16      }
    17 
    18 int Big(int e[],int f[]){
    19     for(int i=249;i>=0;--i) if(e[i]>f[i]) return 1;
    20     else if(e[i]<f[i]) return 0;
    21     return 0;  //相等是返回0
    22     }
    23 
    24 void Jian(int e[],int f[]){
    25      for(int i=249;i>=0;--i)
    26      {
    27        e[i]-=f[i];
    28        int j=i;
    29        while(e[j]<0)
    30        {e[j+1]-=1;e[j]+=10;j++;}
    31              }
    32      return ;
    33      }
    34 
    35 int main()
    36 {
    37     fin>>s1>>s2;
    38     
    39     la=s1.size()-1;
    40     for(int i=0;i<s1.size();++i)
    41     a[i]=s1[s1.size()-1-i]-'0';
    42     lb=s2.size()-1;
    43     for(int i=0;i<s2.size();++i)
    44     b[i]=s2[s2.size()-1-i]-'0';
    45   //  Print(b);
    46     la-=lb;int k; //la++;
    47     while(la>=0)
    48     {//cout<<la<<"  ";
    49       for(k=1;k<=10;++k)   //注意 k
    50       {
    51         memset(c,0,sizeof(c));
    52         for(int i=0;i<=lb;++i)
    53         c[i]=b[i]*k;
    54         for(int i=0;i<=lb;++i)
    55         if(c[i]>9) {c[i+1]+=c[i]/10;c[i]%=10;}
    56         memset(d,0,sizeof(d));
    57         for(int i=0;i<=lb+2;++i)  //lb+1
    58         d[i+la]=c[i];      
    59      //   Print(c);Print(d);Print(a);
    60         if(Big(d,a)) break;
    61               }
    62      // cout<<k<<endl; 
    63       ans[la]=k-1;
    64       if(k==1) {la--;continue;}
    65       k--;
    66       memset(c,0,sizeof(c));
    67       for(int i=0;i<=lb;++i)
    68       c[i]=b[i]*k;
    69       for(int i=0;i<=lb;++i)
    70       if(c[i]>9) {c[i+1]+=c[i]/10;c[i]%=10;}
    71       memset(d,0,sizeof(d));
    72       for(int i=0;i<=lb+2;++i)
    73       d[i+la]=c[i];  
    74       
    75       Jian(a,d);
    76       la--;     
    77                 }
    78     
    79     Print(ans);
    80     return 0;
    81     
    82     }
  • 相关阅读:
    python 面向对象(三大特性)
    python 发红包
    python 计算器
    python 模块和包
    python 异常处理
    python 序列化模块
    python 常用模块
    esriSRGeoCS3Type Constants
    esriSRGeoCS2Type Constants
    esriSRGeoCSType Constants
  • 原文地址:https://www.cnblogs.com/noip/p/2753542.html
Copyright © 2011-2022 走看看