这题应该注意到与b2818的不同
一个点能被看见当且仅当它与(1,1)的横纵坐标的距离gcd为1
所以问题转化为x,y<=n-1,求gcd(x,y)=1的方案数
最后要加上2
代码:
1 var i,n,tot:longint; 2 ans:int64; 3 phi:array[0..50000] of int64; 4 p:array[0..50000] of longint; 5 procedure get; 6 var i,j:longint; 7 begin 8 fillchar(phi,sizeof(phi),0); 9 tot:=0; 10 phi[1]:=0; 11 for i:=2 to n do 12 if phi[i]=0 then 13 begin 14 phi[i]:=i-1;inc(tot);p[tot]:=i; 15 j:=i+i; 16 while j<=n do 17 begin 18 if phi[j]=0 then phi[j]:=j; 19 phi[j]:=(phi[j] div i)*(i-1); 20 inc(j,i); 21 end; 22 end; 23 end; 24 procedure main; 25 begin 26 readln(n);dec(n); 27 get; 28 for i:=2 to n do inc(phi[i],phi[i-1]); 29 writeln(2*phi[n]+3); 30 end; 31 begin 32 main; 33 end. 34
时间: 2024-10-03 22:25:09