首页 > 代码库 > UVALIVE 3571 Visible Lattice Points

UVALIVE 3571 Visible Lattice Points

就欧拉函数然后地推一下。

#include <map>#include <set>#include <list>#include <cmath>#include <ctime>#include <deque>#include <stack>#include <queue>#include <cctype>#include <cstdio>#include <string>#include <vector>#include <climits>#include <cstdlib>#include <cstring>#include <iostream>#include <algorithm>#define LL long long#define PI 3.1415926535897932626using namespace std;int gcd(int a, int b) {return a % b == 0 ? b : gcd(b, a % b);}int phi[1010];int ans[1010];void calcu(){    memset(phi,0,sizeof(phi));    phi[1] = 1;    for (int i = 2; i <= 1000; i++)        if (!phi[i])      for (int j = i; j <= 1000; j += i)      {          if (!phi[j]) phi[j] = j;          phi[j] = phi[j] / i * (i - 1);      }    ans[1] = 3;    ans[2] = 5;    for (int i = 3; i <= 1000; i++)        ans[i] = ans[i - 1] + phi[i] * 2;}int main(){    int kase = 1;    int T;    calcu();    scanf("%d",&T);    while (T--)    {        int n;        scanf("%d",&n);        printf("%d %d %d\n",kase++,n,ans[n]);    }    return 0;}
View Code

 

UVALIVE 3571 Visible Lattice Points