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毫秒