PersonalCorpus 版 (精华区)

寄信人: sino (蚱蜢舟)
标  题: 1091
发信站: 哈工大紫丁香 (2002年03月23日14:19:07 星期六)
来  源: mtlab4.hit.edu.cn 

171204 06:21:56 23 Mar 2002
Bozhang,HIT,P.R.China 1091 Pascal Accepted 0.02 sec 53K

const p:array[1..15] of integer=(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47);
var
    i,j,k,s:integer;
    sum:extended;
function C(a,b:integer):extended;
var
    d:array[1..15] of byte;
    i,j,k:integer;
begin
    if b<a then begin
        result:=0; exit
    end;
    if b=a then begin
        result:=1; exit
    end;
    fillchar(d,sizeof(d),0);
    for i:=b downto b-a+1 do begin
        k:=i;
        for j:=1 to 15 do begin
            if k=1 then break;
            while k mod p[j]=0 do begin
                inc(d[j]); k:=k div p[j];
            end;
        end;
    end;
    for i:=2 to a do begin
        k:=i;
        for j:=1 to 15 do begin
            if k=1 then break;
            while k mod p[j]=0 do begin
                dec(d[j]); k:=k div p[j];
            end;
        end;
    end;
    result:=1;
    for i:=1 to 15 do
        for j:=1 to d[i] do begin
            result:=result*p[i];
        end;
end;
begin
    readln(k,s); sum:=0;
    for i:=1 to 15 do if s>=p[i] then begin
        sum:=sum+C(k,s div p[i]);
    end;
    for i:=1 to 14 do
        for j:=i+1 to 15 do if s>=p[i]*p[j] then begin
            sum:=sum-C(k,s div (p[i]*p[j]));
        end;
    if s>=30 then sum:=sum-C(k,s div 30);
    if s>=42 then sum:=sum-C(k,s div 42);
    if sum>10000 then writeln(10000) else writeln(sum:0:0);
end.

--
撷取生活中每一朵清新的浪花,智慧的浪花 ..汇成音乐的海洋.

※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: mtlab4.hit.edu.cn]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.300毫秒