现在有一圈人,k个好人站在一起,k个坏人站在一起。从第一个好人开始数数。
你要确定一个最小的m,使得在第一个好人被杀死前,k个坏人先被杀死。
输入
一个k,0<k<14
输出
一个m
样例:
输入
3
输出
5
另一个样例:
输入
4
输出
30
program joseph;
var
n,i,ans:longint;
pc:array [1..100] of boolean;
procedure init;
begin
assign(input,'joseph.in');
reset(input);
readln(input,n);
close(input);
end;
procedure print(x:longint);
begin
assign(output,'joseph.out');
rewrite(output);
writeln(output,x);
close(output);
halt;
end;
procedure test(x:longint);
var
i,jl,js:longint;
pd:boolean;
begin
fillchar(pc,sizeof(pc),true);
jl:=0;
pd:=true;
for i:=1 to n do begin
js:=0;
repeat
inc(jl);
if jl>2*n then jl:=jl mod(2*n);
if jl=0 then jl:=2*n;
if pc[jl]=true then inc(js);
until js=x;
pc[jl]:=false;
if jl<=n then begin
pd:=false;
break;
end;
end;
if pd=true then print(x);
end;
begin
init;
i:=n;
repeat
inc(i);
test(i);
until i>maxlongint;
end.