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.
    
  • 相关阅读:
    ASP.NET MVC4 Web 编程第三章
    ASP.NET MVC4 Web 编程第二章
    2020.08.25日
    ASP.NET MVC4 Web 编程第一章
    .net你必须知道的事儿 2.2
    .net你必须知道的事儿 2.1
    资本论
    Cent os mysql主从同步问题
    apache启动脚本
    zentao(禅道)迁移
  • 原文地址:https://www.cnblogs.com/wuzhenhao/p/13288339.html
Copyright © 2011-2022 走看看