主题:各位大侠,帮个忙?(第九届信息学试题解答)
Program program3;
var m,n: integer; mark:boolean;
function test(m,N: integer): integer;
var i,p:integer; flag:boolean;
begin
m:=m-1; i:=0; flag:=false;
for p:=2*N downto (N+1) do
begin
i:=(i+m) mod p;
if (i<N) then
begin
test:=0; flag:=true; break;
end
end;
if not(flag) then test:=1;
end;
begin
read(n); m:=1; mark:=false;
repeat
if (test(m,n)=1) then
begin writeln(m); break; end;
m:=m+1;
until mark;
end.
输入:7,输出为?
有相关书籍上说可以得出通项公式,我思考很长时间,却没有得出,但用模拟法,运算量太大,不是个好的方法.请给出分析的思路,谢谢!
var m,n: integer; mark:boolean;
function test(m,N: integer): integer;
var i,p:integer; flag:boolean;
begin
m:=m-1; i:=0; flag:=false;
for p:=2*N downto (N+1) do
begin
i:=(i+m) mod p;
if (i<N) then
begin
test:=0; flag:=true; break;
end
end;
if not(flag) then test:=1;
end;
begin
read(n); m:=1; mark:=false;
repeat
if (test(m,n)=1) then
begin writeln(m); break; end;
m:=m+1;
until mark;
end.
输入:7,输出为?
有相关书籍上说可以得出通项公式,我思考很长时间,却没有得出,但用模拟法,运算量太大,不是个好的方法.请给出分析的思路,谢谢!