zoukankan      html  css  js  c++  java
  • 模板:大整数除法

     1 string sub(string s1,string s2)
     2 {
     3     int flag = 0;
     4     if(s1.length()<s2.length() || (s1.length()==s2.length() && s1 < s2))
     5     {
     6         flag = 1;
     7         string temp=s1;
     8         s1=s2;
     9         s2=temp;
    10     }
    11 
    12 
    13     int i,j;
    14     for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--)
    15     {
    16         s1[i]=char(s1[i]-(j>=0?s2[j]-'0':0));   //注意细节
    17         if(s1[i]-'0'<0)
    18         {
    19             s1[i]=char(s1[i] + 10);
    20             s1[i-1]--;
    21         }
    22     }
    23 
    24     for(i = 0; i < s1.length(); i++)
    25     {
    26         if(s1[i] != '0') break;
    27     }
    28     if(i == s1.length()) i = s1.length()-1;
    29     s1 = s1.substr(i);
    30 
    31     if(flag) s1 = "-" + s1;
    32 
    33     return s1;
    34 }
    35 string sum(string s1,string s2)
    36 {
    37     if(s1.length()<s2.length())
    38     {
    39         string temp=s1;
    40         s1=s2;
    41         s2=temp;
    42     }
    43     int i,j;
    44     for(i=s1.length()-1,j=s2.length()-1;i>=0;i--,j--)
    45     {
    46         s1[i]=char(s1[i]+(j>=0?s2[j]-'0':0));   //注意细节
    47         if(s1[i]-'0'>=10)
    48         {
    49             s1[i]=char((s1[i]-'0')%10+'0');
    50             if(i) s1[i-1]++;
    51             else s1='1'+s1;
    52         }
    53     }
    54     return s1;
    55 }
    56 
    57 string div(string s1,string s2)
    58 {
    59     string res = "0";
    60     if(s1.length()<s2.length() || (s1.length()==s2.length() && s1 < s2))
    61     {
    62         return "0";
    63     }
    64 
    65     int i;
    66     int sub_length = s1.length() - s2.length();
    67     for(i = sub_length; i >= 0; i--)
    68     {
    69         string s3(i,'0');
    70         string s4 = s2 + s3;
    71         
    72         do
    73         {
    74             string temp = sub(s1,s4);
    75             if(temp[0] == '-') break;
    76             else
    77             {
    78                 s1 = temp;
    79                 res = sum(res,("1" + s3));
    80             }
    81         }while(1);
    82     }
    83     return res;
    84 }
  • 相关阅读:
    NumPy笔记:运算符(exp,sqrt,square)
    NumPy笔记:常用操作
    php字符操作
    laravel如何实现批量插入
    php中@符号的作用
    laravel如何实现数据的批量插入
    如何在laravel框架中使用阿里云的oss
    laravle如何设置mysql数据表前缀
    thinkphp视图中如何调用并且向控制器传参数
    thinkphp如何隐藏入口文件index.php
  • 原文地址:https://www.cnblogs.com/mobileliker/p/3516939.html
Copyright © 2011-2022 走看看