Cod sursa(job #465755)
Utilizator | Data | 25 iunie 2010 12:56:41 | |
---|---|---|---|
Problema | Ratphu | Scor | 20 |
Compilator | fpc | Status | done |
Runda | Stelele Informaticii 2010, gimnaziu si clasa a IX-a, Ziua 1 | Marime | 4.71 kb |
{7,11,13,17,19}
program alex;
var f:text;
n,z,x:int64;
cifpar,cifimp,zero,cinci,nr,s,c,p,i:longint;
begin
assign(f,'ratphu.in');reset(f);
readln(f,n,p);
close(f);
cifpar:=0;
cifimp:=0;
zero:=0;
cinci:=0;
nr:=0;
s:=0;
x:=n;
while n<>0 do
begin
c:=n mod 10;
n:=n div 10;
s:=s+c;
if c mod 2=0 then inc(cifpar)
else inc(cifimp);
if c=0 then inc(zero);
if c=5 then inc(cinci);
s:=s+c;
nr:=nr+1;
end;
cinci:=cinci+zero;
assign(f,'ratphu.out');rewrite(f);
if p=x then begin
z:=1;
for i:=2 to nr do
z:=z*i;
writeln(f,z);
end
else begin
z:=0;
case p of
1:begin
z:=1;
for i:=2 to nr do
z:=z*i;
writeln(f,z);
end;
2:begin
z:=1;
for i:=2 to nr-1 do
z:=z*i;
z:=z*cifpar;
writeln(f,z);
end;
3:begin
if s mod 3=0 then begin
z:=1;
for i:=2 to nr do
z:=z*i;
writeln(f,z);
end
else writeln(f,0);
end;
4:begin
if cifpar<2 then writeln(f,0);
end;
5:begin
if cinci=0 then writeln(f,0)
else begin
z:=1;
for i:=2 to nr-1 do
z:=z*i;
z:=z*cinci;
writeln(f,z);
end;
end;
6:begin
if s mod 3=0 then begin
if cifpar=0 then writeln(f,0)
else begin
z:=1;
for i:=2 to nr-1 do
z:=z*i;
z:=z*cifpar;
writeln(f,z);
end;
end
else writeln(f,0);
end;
8:begin
if cifpar=0 then writeln(f,0);
end;
9:begin
if s mod 9<>0 then writeln(f,0)
else begin
z:=1;
for i:=2 to nr do
z:=z*2;
writeln(f,z);
end;
end;
10:begin
if zero=0 then writeln(f,0)
else begin
z:=1;
for i:=2 to nr-1 do
z:=z*i;
z:=z*zero;
writeln(f,z);
end;
end;
12:begin
if(s mod 3<>0)or(cifpar=0)then writeln(f,0);
end;
14:begin
if cifpar=0 then writeln(f,0);
end;
15:begin
if s mod 3=0 then begin
if cinci=0 then writeln(f,0)
else begin
z:=1;
for i:=2 to nr-1 do
z:=z*i;
z:=z*cinci;
writeln(f,z);
end;
end
else writeln(f,0);
end;
16:begin
if cifpar<2 then writeln(f,0);
end;
18:begin
if s mod 9=0 then begin
if cifpar=0 then writeln(f,0)
else begin
z:=1;
for i:=2 to nr-1 do
z:=z*i;
z:=z*cifpar;
writeln(f,z);
end;
end
else writeln(f,0);
end;
20:begin
if zero=0 then writeln(f,0)
else begin
if zero=1 then begin
if cifpar=0 then writeln(f,0)
else begin
z:=1;
for i:=2 to nr-2 do
z:=z*i;
z:=z*cifpar;
writeln(f,z);
end;
end
else begin
z:=1;
for i:=2 to nr-2 do
z:=z*i;
if cifpar<>0 then z:=z*zero*cifpar
else z:=z*zero;
writeln(f,z);
end;
end;
end;
end;
end;
close(f);
end.