标签:
Time Limit: 1000MS | Memory Limit: 65536K | |
Total Submissions: 2085 | Accepted: 665 |
Description
Input
Output
Sample Input
4 2 3 4 5 4 2 4 6 8 7 2 3 4 5 7 6 8
Sample Output
1 0 34
思路:容斥原理;
由于给的数据范围是10000;所以我们先打表10000以内的素数;
然后我们分解每一个数;求出它的各个不同的质因数,然后暴力组合每个数的质因数,在bt数组里记录个数,也就是bt[i],i这个数可以被前面的哪些数整除
最后从1循环到10000,容斥一遍就可以得到不合要求的个数,最后总的减去就行。
由于每个数不过10000,他的质因数不会超过8个,那么复杂度为(n*28);
1 #include<stdio.h> 2 #include<algorithm> 3 #include<iostream> 4 #include<string.h> 5 #include<queue> 6 #include<stack> 7 #include<map> 8 #include<math.h> 9 using namespace std; 10 typedef long long LL; 11 bool prime[10005]= {0}; 12 int ans[10005]; 13 int aa[10005]; 14 int bt[10005]; 15 int cc[10005]= {0}; 16 bool dd[10005]= {0}; 17 queue<int>que; 18 int main(void) 19 { 20 int i,j,k; 21 for(i=2; i<200; i++) 22 { 23 for(j=i; i*j<=10000; j++) 24 { 25 prime[i*j]=true; 26 } 27 } 28 int cnt=0; 29 for(i=2; i<=10000; i++) 30 { 31 if(!prime[i]) 32 { 33 ans[cnt++]=i; 34 } 35 } 36 while(scanf("%d",&k)!=EOF) 37 { 38 memset(bt,0,sizeof(bt)); 39 for(i=0; i<k; i++) 40 { 41 scanf("%d",&aa[i]); 42 } 43 for(i=0; i<k; i++) 44 { 45 int nn=aa[i]; 46 int t=0; 47 int flag=0; 48 while(nn>1) 49 { 50 if(flag==0&&nn%ans[t]==0) 51 { 52 flag=1; 53 que.push(ans[t]); 54 nn/=ans[t]; 55 } 56 else if(nn%ans[t]==0) 57 { 58 nn/=ans[t]; 59 flag=1; 60 } 61 else 62 { 63 flag=0; 64 t++; 65 } 66 } 67 if(nn>1) 68 { 69 que.push(nn); 70 } 71 int xx=0; 72 while(!que.empty()) 73 { 74 cc[xx++]=que.front(); 75 que.pop(); 76 } 77 int x; 78 int y; 79 for(x=1; x<=(1<<xx)-1; x++) 80 { 81 int ak=1; 82 int vv=0; 83 for(j=0; j<xx; j++) 84 { 85 if(x&(1<<j)) 86 { 87 vv++; 88 ak*=cc[j]; 89 } 90 } 91 bt[ak]+=1; 92 if(vv%2) 93 dd[ak]=true; 94 } 95 } 96 LL sum=0; 97 LL sum1=0; 98 for(i=2; i<=10000; i++) 99 { 100 if(bt[i]>=4) 101 { 102 LL nn=(LL)bt[i]*(LL)(bt[i]-1)*(LL)(bt[i]-2)*(LL)(bt[i]-3)/24; 103 if(dd[i]) 104 sum+=nn; 105 else sum-=nn; 106 } 107 } 108 sum1=(LL)k*(LL)(k-1)*(LL)(k-2)*(LL)(k-3)/24; 109 sum1-=sum; 110 printf("%lld\n",sum1); 111 } 112 return 0; 113 }
标签:
原文地址:http://www.cnblogs.com/zzuli2sjy/p/5467008.html