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

    题目

    http://oj.jzxx.net/problem.php?id=1189

    题目描述
    高精度减法,求(a)(-)(b)(a)(,)(b)都不超过(240)位.
    输入
    两个非负整数 每行一个
    输出
    一个数
    样例
    输入

    33333333333333333333333333333333333333333
    22222222222222222222222222222222222222222
    

    输出

    11111111111111111111111111111111111111111
    

    提示
    数据并不保证a>b,如果差是负数要输出(')(-)(')号; 另外差的高位上的(0)要去掉。

    思路

    先用字符串读入,再存入数组,进行高精减,但是借位要单独判断
    (l)表示是否借位,用if语句来实现(详见代码)
    还有一个要单判:(a)(>)(b)
    解决:先输出(')(-)('),再交换(a)(,)(b),最后进行高精

    代码

    var
     t,s1,s2:string;
     l,i,j:longint;
     p:boolean;
     a,b,c:array[1..240] of integer;
    begin
     readln(s1);
     readln(s2);
     if (length(s1)<length(s2))or((length(s1)=length(s2))and(s1<s2)) then
      begin
       t:=s1;s1:=s2;s2:=t;
       p:=true;
      end;//单判
     l:=length(s1);
     for i:=1 to l do
      val(s1[l-i+1],a[i]);
     l:=length(s2);
     for i:=1 to l do
      val(s2[l-i+1],b[i]);
     l:=0;//用l来判断
     for i:=1 to 240 do
      if a[i]-b[i]-l>=0 then//如果不用借位
       begin
        c[i]:=a[i]-b[i]-l;
        l:=0;//l=0
       end
       else//要借位
        begin
         c[i]:=a[i]-b[i]+10-l;
         l:=1;//l=1
        end;
     if p then write('-');//如果是负数,则输出'-'号
     i:=240;
     while (c[i]=0)and(i>1) do dec(i);
     for j:=i downto 1 do write(c[j]);//高精输出
    end.
    
  • 相关阅读:
    BOM(JavaScript高程笔记)
    初识AJAX
    初识DOM
    《JavaScript DOM 编程艺术》读书笔记
    git/ TortoiseGit 在bitbucket.org 使用证书登陆
    原生JS的对象常用操作总结
    js 判断对象相等
    IE 坑爹的浏览器兼容模式
    Linux+mysql混杂
    前端-CS-04
  • 原文地址:https://www.cnblogs.com/wuzhenhao/p/13288339.html
Copyright © 2011-2022 走看看