题目
Input
Sample Input
3 5
Output
Sample Output
-1
Data Constraint
比赛时の想法
好垃圾啊只想到70分的做法~~70分的话随便搞搞咯~
正解
注意到一条显而易见的性质:d(n) 为奇数当且仅当 n 为完全平方数。也就是说,对于每一个 i 我们只需求出有多少个 j 满足 i · j 是完全平方数。那么我们设i= pq2 ,则j一定可以表示成 qp2 的形式,而且对于一个i,q有 m/p−−−−√(下取整) 种做法(因为p显然可以取任意值)然后再线筛一下就可以过了
贴代码
var
a:array[0..10000005]of longint;
i,j,k,l,ans,x:longint;
n,m:int64;
begin
readln(n,m);
for i:=1 to n do a[i]:=i;
for i:=2 to trunc(sqrt(n)) do
begin
j:=1;
x:=i*i;
while x*j<=n do
begin
a[x*j]:=j;
inc(j);
end;
end;
for i:=1 to n do
begin
x:=trunc(sqrt(m/a[i]));
if x mod 2=0 then inc(ans) else dec(ans);
end;
writeln(ans);
end.