jzoj3520 原根

来源:互联网 发布:ipad音乐软件 方块 编辑:程序博客网 时间:2024/05/21 17:29
3520. 【NOIP2013模拟11.7B组】原根(math) 


Description






Input


有且只有一个正整数m。


Output


以递增序依次输出模m的所有原根,每行输出一个原根。


如果不存在模m的原根,输出-1。


分析:暴力找原根即可。


代码

var  i,j,n,s:longint;  fl:boolean;  k:int64;function gcd(a,b:longint):longint;var  r:longint;begin  r:=a mod b;  while r>0 do    begin      a:=b;      b:=r;      r:=a mod b;    end;  exit(b);end;begin  assign(input,'math.in');reset(input);  assign(output,'math.out');rewrite(output);  readln(n);  for i:=1 to n do    if gcd(n,i)=1 then inc(s);  if n=1 then    begin      writeln(1);      halt;    end;  for i:=1 to n-1 do    if gcd(n,i)=1 then      begin        k:=i;        for j:=1 to s do          begin            if (k=1) then              begin                if j=s then                  begin                    writeln(i);                    fl:=true;                  end;                break;              end;            k:=(k*i) mod n;          end;      end;  if not fl then writeln(-1);  close(input);close(output);end.