高精减

原创 2015年07月10日 09:47:03
代码一:const max=200;
var
  s,sa,sb:string;
  a,b:array[1..max] of integer;
  len,la,lb, i:integer;
  fh:char;
begin
   readln(sa);   readln(sb);
   if sa=sb then begin writeln(0);halt;end;
   if (length(sa)<length(sb))or
        ((length(sa)=length(sb))and(sa<sb)) then
       begin fh:='-'; s:=sa; sa:=sb; sb:=s; end;

   la:=length(sa); lb:=length(sb);
   fillchar(a,sizeof(a),0);  fillchar(b,sizeof(b),0);
   for i:= la downto 1 do a[la-i+1]:=ord(sa[i])-ord('0');
   for i:= lb downto 1 do b[lb-i+1]:=ord(sb[i])-ord('0');
len:=la;
     for i:=1 to len do
        begin
         if a[i]<b[i] then
           begin
            a[i+1]:=a[i+1]-1;
            a[i]:=a[i]+10;
           end;
         a[i]:=a[i]-b[i];
        end;
     while a[len]=0 do len:=len-1;
     if fh='-' then write(fh);
     for i:=len downto 1 do write(a[i]);
     writeln;
end.
代码二:const 
    size= 200;
type
    hugeint = record
        len : integer;
        num : array[1..size] Of Integer;
    end;
var a,b:hugeint;
    s1,s2:string;
    i:integer;
function over(a, b : hugeint) : integer;
    var
        i : Integer;
    begin
        If (a.len>b.len) then
            begin
                over :=1 ;
                exit;
            end;
        if a.len < b.len then
            begin
                over := 2;
                exit;
            end;
        for i := a.len downto 1 do
            begin
                If a.num[i] > b.num[i] then
                    begin
                        over := 1;
                        exit;
                    end;
                if a.num[i] < b.num[i] then
                    begin
                        over := 2;
                 exit;
                    end;
            end;
        over := 3;
    end;
procedure minus(a,b:hugeint);
  var
   i:longint;
   t,ans:hugeint;
  begin
fillchar(ans.num,sizeof(ans.num),0);
 if over(a,b)=2 then
   begin
    write('-');
    t:=a;a:=b;b:=t;
   end;
 if over(a,b)=3 then begin writeln(0);exit;end;
 ans.len:=a.len;
 for i:=1 to ans.len do ans.num[i]:=a.num[i]-b.num[i];
 for i:=1 to ans.len do
  if ans.num[i]<0 then
   begin
     dec(ans.num[i+1]);
     inc(ans.num[i],10);
   end;
 while (ans.len>1)and(ans.num[ans.len]=0) do dec(ans.len);
 for i:=ans.len downto 1 do write(ans.num[i]);
 writeln;
end;
   procedure datain;
   begin
    //assign(input,'highminus.in');  assign(output,'highminus.out');
    //reset(input); rewrite(output);
    readln(s1);
    readln(s2);
    a.len:=length(s1);
    b.len:=length(s2);
    for i:=1 to a.len do  a.num[i]:=ord(s1[a.len-i+1])-ord('0');
    for i:=1 to b.len do  b.num[i]:=ord(s2[b.len-i+1])-ord('0');
   end;
   begin
    datain;
    minus(a,b);
   //close(input);close(output);
   end.

版权声明:本文为博主原创文章,未经博主允许不得转载。

C++要点精简总结

1、  当函数定义放在函数调用之后时,C程序的函数原型即声明(function prototype)有时可以省略,而C++程序的函数原型则不能省略。 2、  内联函数,函数调用中系统要进行现...
  • VisualMan_whu
  • VisualMan_whu
  • 2014年05月16日 16:47
  • 624

(六)u-boot2013.01.01 for s5pv210:《精简u-boot文件目录,定制自己的目标板》

1. 删改U-boot代码结构        把不用到的和与我们s5pv210移植无关的硬件平台代码统统删除,眼不见为净。这样代码看起来就干净利落多了。 1.1.进入arch目录,删掉除arm以外的目...
  • zsy2020314
  • zsy2020314
  • 2013年07月15日 11:37
  • 4116

【原创】zstack - 协议栈程序精简日志- IO试验

【原创】zstack - 协议栈程序精简日志- IO试验闲来无事测试zstack协议栈的记录。IO实验操作对象是DS18B20温度传感器,东西太简单,直接贴代码:IO试验直接奉上DS18B20驱动程序...
  • linczone
  • linczone
  • 2015年05月23日 16:20
  • 851

【原创】zstack - 协议栈程序精简日志-按键驱动移植

【原创】zstack - 协议栈程序精简日志-按键驱动移植闲来无事测试zstack协议栈的记录。目的:去掉协议栈中无用的部分,精简协议栈程序。 我的板子上有两个按键,S1 对应P0.4,S2对应P0...
  • linczone
  • linczone
  • 2015年05月23日 16:33
  • 1342

精减版printf

转自:http://blog.csdn.net/xgbing/article/details/7642664
  • dongdong7664
  • dongdong7664
  • 2014年07月17日 08:53
  • 255

封装精简版jQuery插件

min.js/** * * @authors Your Name (you@example.org) * @date 2017-04-24 15:54:00 * @version $Id...
  • qq_26766283
  • qq_26766283
  • 2017年04月24日 23:55
  • 435

IP地址、子网掩码、子网划分精减汇总

本文内容是基于互联网上多篇关于IP地址和子网掩码以及网络划分的文章精减改编而来,是为了方便我自己学习理解之用。 -------------------------------------------...
  • eudemon_cn
  • eudemon_cn
  • 2013年01月11日 10:32
  • 2568

利用linuxkernel构建一个精简版的操作系统内核

作者 水云青   原创作品转载请注明出处 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000 下面分析两个C语...
  • harrywater123
  • harrywater123
  • 2016年03月06日 15:13
  • 1089

各种版本的称呼--例如Lite指精减版

Lite指精减版。 1.Alpha版(内部测试版):一般只在软件开发公司内部运行,不对外公开。主要是开发者自己对产品进行测试,检查产品是否存在缺陷、错误,验证产品功能与说明书、用户手册是否一...
  • power1952
  • power1952
  • 2015年02月24日 21:19
  • 1012

关于理解middlebury提供的立体匹配代码后的精减

Middlebury立体匹配源码总结 优化方法 图像可否预处理 代价计算可否采用BT方式 可选代价计算方法 可否代价聚合 可否MinFilter优化原始代价 WT...
  • liyingjiang22
  • liyingjiang22
  • 2016年11月17日 17:23
  • 827
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:高精减
举报原因:
原因补充:

(最多只允许输入30个字)