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

    做除法时,每一次上商的值都在0~9,每次求得的余数连接以后的若干位得到新的被除数,继续做除法。因此,在做高精度除法时,要涉及到乘法运算和减法运算,还有移位处理。当然,为了程序简洁,可以避免高精度乘法,用0~9 次循环减法取代得到商的值。显然高精度除法相对是比较麻烦的,由于竞赛中很少涉及高精度数除以高精度数,所以,我们在这里只讨论一下高精度数除以普通整数的算法,采取的方法是按位相除法。

     1 program exam4;
     2 const max=200;
     3 var a,c:array[1..max] of 0..9;
     4      x,b:longint; 
     5      n1:string;
     6      lena,i,j:integer;
     7 begin
     8    readln(n1);
     9    lena:=length(n1);
    10    for i:=1 to lena do a[i] := ord(n1[i]) - ord(’0’);
    11    readln(b);
    12     x:=0; {按位相除}
    13     for i:=1 to lena do 
    14      begin                 //按位相除
    15         c[i]:=(x*10+a[i]) div b;
    16         x:=(x*10+a[i]) mod b;
    17      end;
    18     j:=1;
    19     while (c[j]=0) and (j<lena) do inc(j); {去除高位的0}
    20     for i:=j to lena do write(c[i]) ;
    21 end.
  • 相关阅读:
    Remove Element
    C++ 一些STL
    Two Pointers/hash/3Sum/4Sum类题目
    动态规划
    UVa 12657 双向链表
    并行运行环境
    多线程编程
    HTML XML CSS JS 迅速学习
    UVa 11988 数组模拟链表
    静态链表
  • 原文地址:https://www.cnblogs.com/vacation/p/5176261.html
Copyright © 2011-2022 走看看