not ac
填个空
1 /** 2 3 (a,b) = 质素 4 a [1,A] b [1 ,B]; 5 6 **/ 7 8 #include<iostream> 9 #include<cstring> 10 #include<cstdlib> 11 #include<stdio.h> 12 using namespace std; 13 typedef __int64 LL; 14 15 const int N = 1e5+5; 16 bool vis[N]; 17 int p[N]; 18 int cnt; 19 int g[N],u[N],sum[N]; 20 21 void init() 22 { 23 memset(vis,0,sizeof(vis)); 24 u[1] = 1; 25 cnt = 0; 26 for(int i=2;i<N;i++) 27 { 28 if(!vis[i]) 29 { 30 p[cnt++]=i; 31 u[i] = -1; 32 g[i] = 1; 33 } 34 for(int j=0;j<cnt&&i*p[j]<N;j++) 35 { 36 vis[i*p[j]] = 1; 37 if(i%p[j]) 38 { 39 u[i*p[j]] = -u[i]; 40 g[i*p[j]] = u[i] - g[i]; 41 } 42 else 43 { 44 u[i*p[j]] = 0; 45 g[ i*p[j]] = u[i]; 46 break; 47 } 48 } 49 } 50 sum[0] = 0; 51 for(int i=1;i<N;i++) 52 sum[i] = sum[i-1]+g[i]; 53 } 54 LL slove(int A,int B) 55 { 56 if(A>B) swap(A,B); 57 LL ans =0; 58 for(int i=1,last; i<=A;i=last+1) 59 { 60 last = min(A/(A/i) , B/(B/i)); 61 ans = ans + (A/i)*(B/i)*(sum[last]-sum[i-1]); 62 } 63 return ans; 64 } 65 int main() 66 { 67 return 0; 68 }