GcdTime
limit:10000MS
Memory Limit:262144KB
64bit IO Format:%lld &%llu SubmitStatus
Description
Given an integer n, 1<=x,y<=n and gcd (x, y) are prime
Number pairs (x, y) how many pairs.
Input
An integer n
Output
Title
Sample Input
4
Sample Output
4
#include <cstdio> #include <algorithm> #include <iostream> #include <cmath> #include < Cstring> #include <vector> #define LL long long#define N 10000010using namespace Std;bool check[n+10];int prime[n ];int mu[n+10];int tot;int n;void moblus () {memset (check,0,sizeof check); Mu[1]=1; tot=0; for (int i=2; i<n; i++) {if (!check[i]) {prime[tot++]=i; Mu[i]=-1; } for (int j=0; j<tot; J + +) {if (i*prime[j]>n) break; Check[i*prime[j]]=1; if (i%prime[j]==0) {mu[i*prime[j]]=0; Break } else mu[i*prime[j]]=-mu[i]; }}}int Main () {moblus (); while (scanf ("%d", &n)!=eof) {ll ans=0; for (int i=0; i<tot; i++) {int x=n/prime[i]; if (x==0) break; for (int j=1; j<=x; j + +) ans+= (LL) mu[j]* (x/j) * (x/j); } printf ("%lld\n", ans); } return 0;}
Bzoj 2818 gcd (Möbius inversion)