2017.07.10【NOIP提高组】模拟赛B组 可见点数 题解

原题:

http://172.16.0.132/senior/#contest/show/2045/0

题目描述:

ZPS经过长期的努力争取,终于成为了0901班的领操员,他要带领0901班参加广播操比赛。现在0901班的队伍可以看作是一个n*n的点阵,每个人都站在格点上。现在作为领操员的ZPS站(0,0)点,他想知道如果0901班的队伍站齐了,他能看到多少个人的脸(假设每个人的身高相同,体积相同)。

输入:

一个正整数n。

输出:

ZPS能看到多少个人的脸(当然他是看不到自己的脸的)。

样例输入:

3

样例输出:

5

数据范围限制:

40%的数据,n<=1500。
100%的数据,n<=100000。

分析:

显然,对于在(x,y)的人能被ZPS看到,那么gcd(x,y)=1;
枚举每一行,可以用φ(i)求出y(注意φ(i)用线性求);
即ans=Σ(i=1,n-1)φ(i);

实现:

loading······

你可能感兴趣的:(2017.07.10【NOIP提高组】模拟赛B组 可见点数 题解)