Fillchar过程全解

Fillchar是Turbo/Borland Pascal的System单元的一个标准过程,它的使用格式是:FillChar(var X; Count: Word; Value),它的功能是,把指定变量X在内存段中所占的低Count个字节赋为相同的值Value, 其中Value是填充的值,只能是Byte、Char或Boolean等单字节类型的值。在Free Pascal中稍加扩展为FillChar(var X; Count: Longint; Value), 功能没变。

[例1]: Fillchar通常用来给数据赋初值。

var a:array [1..10] of arrtype;

执行

fillchar(a,sizeof(a),0);


当arrtype为

  1. real(其他实数类型差不多)
  2. integer(byte,word,longint,shortint都相同)
  3. boolean
  4. char
  • 使得a中的元素全部成为0.0
  • 全部为0
  • 全部为false
  • 全部为#0

这里使用了函数sizeof(a),其功能是返回变量a所占的总字节数,如上例返回:

当arrtype为

  • real sizeof(a)的值为60(每个元素占6个字节,10个元素共占60个字节)
  • single sizeof(a)的值为40(每个元素占4个字节,10个元素共占40个字节)
  • double sizeof(a)的值为80(每个元素占8个字节,10个元素共占80个字节)
  • extended sizeof(a)的值为100(每个元素占10个字节,10个元素共占100个字节)
  • comp sizeof(a)的值为80(每个元素占8个字节,10个元素共占80个字节)
  • integer(word) sizeof(a)的值为20 (每个元素占2个字节,10个元素共占20个字节)
  • byte (shortint) sizeof(a)的值为10 (每个元素占1个字节,10个元素共占10个字节)
  • longint sizeof(a)的值为40 (每个元素占4个字节,10个元素共占40个字节)
  • boolean sizeof(a)的值为10(每个元素占1个字节,10个元素共占10个字节)
  • char sizeof(a)的值为10 (每个元素占1个字节,10个元素共占10个字节)

所以例1的结果就是将数组a的所有元素(全部字节)用0来填充,要注意对不同类型的数据而言,对“0”的“解释”是截然不同的!对整型或实型量来讲,所有字节均为0,则该量也为0;对boolean型量(一个字节)来讲,0表示false(非0数表示true),则该量为false;对char型量(一个字节)来讲,0表示ASCII码值为0的字符,则该量为#0。
Read More...

基本算法

一、数论算法

1.求两数的最大公约数

function gcd(a,b:integer):integer;
begin
  if b=0 then gcd:=a
  else gcd:=gcd (b,a mod b);
end;

2.求两数的最小公倍数

function lcm(a,b:integer):integer;
  var t:integer;
  begin
    if a<b then begin
      t:=a;a:=b;b:=t;
    end;
    lcm:=a;
    while lcm mod b>0 do inc(lcm,a);
  end;

3.素数的求法
A.小范围内判断一个数是否为质数:

function prime (n: integer): Boolean;
  var I: integer;
  begin
    for I:=2 to trunc(sqrt(n)) do
    if n mod I=0 then begin
      prime:=false; exit;
    end;
    prime:=true;
  end;

B.判断longint范围内的数是否为素数(包含求50000以内的素数表):

procedure getprime;
  var
    i,j:longint;
    p:array[1..50000] of boolean;
  begin
    fillchar(p,sizeof(p),true);
    p[1]:=false;
    i:=2;
    while i=x then break
      else if x mod pr[i]=0 then exit;
    prime:=true;
  end;{prime}
Read More...

一些 Online Judge 网站网址

USACO https://usaco.training/ (经典)

浙江大学 https://zoj.pintia.cn/

北京大学 http://poj.org/

VIJOS https://vijos.org/

同济大学 http://acm.tongji.edu.cn

天津大学 http://acm.tju.edu.cn/toj

哈工大 http://acm.hit.edu.cn/

吉林大学 http://acm.jlu.edu.cn

四川大学 http://acm.scu.edu.cn/soj/

汕头大学 http://acm.stu.edu.cn

中国科技大学 http://acm.ustc.edu.cn/ustcoj/

杭州电子科技大学 http://acm.hdu.edu.cn

湖南大学 http://acm.hnu.cn:8080/online

福州大学 http://acm.fzu.edu.cn

厦门大学 http://acm.xmu.edu.cn/JudgeOnline

华中科技大学 http://www.hustoj.org/

浙江工业大学 http://acm.zjut.edu.cn/onlinejudge/

香港信息学竞赛 HKOI http://judge.hkoi.org

UVA https://onlinejudge.org/ (题目很杂)

URAL https://acm.timus.ru (偏重数学)

SGU http://acm.sgu.ru

EL Judge http://acm.mipt.ru/judge/problems.pl

SPOJ https://pl.spoj.com/

E-OLIMP https://www.eolymp.com/