zoukankan      html  css  js  c++  java
  • 【NOIP2016练习】T2 跑跑步 (数论)

    这场的难度是从高到低的

     1 var a:array[1..100]of longint;
     2     n,m,i,ans:longint;
     3 
     4 function gcd(x,y:longint):longint;
     5 var r:longint;
     6 begin
     7  repeat
     8   r:=x mod y;
     9   x:=y;
    10   y:=r;
    11  until r=0;
    12  exit(x);
    13 end;
    14 
    15 function fi(x:longint):longint;
    16 var i:longint;
    17 begin
    18  fi:=x;
    19  for i:=2 to trunc(sqrt(x)) do
    20   if x mod i=0 then
    21   begin
    22    fi:=fi div i*(i-1);
    23    while x mod i=0 do x:=x div i;
    24   end;
    25  if x>1 then fi:=fi div x*(x-1);
    26 end;
    27 
    28 function clac(x:longint):longint;
    29 var i:longint;
    30 begin
    31  for i:=1 to m do
    32   if x mod gcd(n,a[i])=0 then exit(fi(n div x));
    33  exit(0);
    34 end;
    35 
    36 begin
    37  assign(input,'1.in'); reset(input);
    38  assign(output,'1.out'); rewrite(output);
    39  readln(n,m);
    40  for i:=1 to m do read(a[i]);
    41  for i:=1 to trunc(sqrt(n)) do
    42   if n mod i=0 then
    43   begin
    44    ans:=ans+clac(i);
    45    if i*i<>n then ans:=ans+clac(n div i);
    46   end;
    47  writeln(n-ans);
    48 
    49  close(input);
    50  close(output);
    51 end.
  • 相关阅读:
    (数论选拔)联盟阵容
    ai变成bi(递增)最小次数
    状压dp
    dp被3整除的子序列
    离散化+莫队
    dp+哈希
    set的应用
    NOIP 2016 明明的随机数
    洛谷背景更改
    zzulioj 1734 堆
  • 原文地址:https://www.cnblogs.com/myx12345/p/6013993.html
Copyright © 2011-2022 走看看