Thứ Bảy, 10 tháng 6, 2017

Giải bài LCM (TS10, PTNK 2017), code chạy được 50% số điểm

var m,n,d,x,t,s:qword;
    i,j:longint;
    a:array[1..1000000] of longint;

function lt(x,y:longint):qword;
   var s:qword;i:longint;
   begin
   s:=1;
   for i:=1 to y do s:=s*x;
   exit(s);
   end;

procedure pt(x:longint);
   var i:longint;
   begin
   i:=2;
   while x>1 do
      begin
      t:=0;
      while x mod i=0 do
         begin
         inc(t);
         x:=x div i;
         end;
      IF t>a[i] then a[i]:=t;
      inc(i);
      end;
   end;


begin
assign(input,'LCM.inp');reset(input);
assign(output,'LCM.out');rewrite(output);
read(m);j:=0;
for i:=2 to m do
   pt(i);
s:=1;
for i:=2 to m do
   s:=(s*(lt(i,a[i]) mod 1000000007)) mod 1000000007;
WRITE(S);
end.

Không có nhận xét nào:

Đăng nhận xét

Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.