PersonalCorpus 版 (精华区)

153627 04:50:11 4 Mar 2002
Bozhang,HIT,P.R.China 1055 Pascal Accepted 1.552 sec 82K


var
    p:array[1..5133] of word;
    sum:array[1..5133] of integer;
    a,b,i,j,k,m,n:integer;
    flag:boolean;
begin
    p[1]:=2; k:=1;
    for i:=3 to 50000 do begin
        flag:=true;
        for j:=1 to k do begin
            if i mod p[j]=0 then begin flag:=false; break end;
            if p[j]*p[j]>i then break;
        end;
        if flag then begin inc(k); p[k]:=i end;
    end;
    fillchar(sum,sizeof(sum),0);
    readln(n,m); if m>n-m then begin a:=m;b:=n-m end else begin a:=n-m; b:=m
 end;
    for i:=a+1 to n do begin
        k:=i;
        for j:=1 to 5133 do begin
            if k=1 then break;
            while k mod p[j]=0 do begin
                inc(sum[j]);
                k:=k div p[j];
            end;
        end;
    end;
    for i:=2 to b do begin
        k:=i;
        for j:=1 to 5133 do begin
            if k=1 then break;
            while k mod p[j]=0 do begin
                dec(sum[j]);
                k:=k div p[j];
            end;
        end;
    end;
    k:=0; for i:=1 to 5133 do if sum[i]<>0 then inc(k);
    writeln(k);
end.
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.230毫秒