Sky Code(poj3904)
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 }
Sky Code(poj3904)的更多相关文章
- POJ3904 Sky Code
题意 Language:Default Sky Code Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3980 Accepte ...
- poj3904 Sky Code —— 唯一分解定理 + 容斥原理 + 组合
题目链接:http://poj.org/problem?id=3904 Sky Code Time Limit: 1000MS Memory Limit: 65536K Total Submiss ...
- POJ 3904 Sky Code (容斥原理)
B - Sky Code Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit ...
- POJ Sky Code 莫比乌斯反演
N. Sky Code Time Limit: 1000ms Case Time Limit: 1000ms Memory Limit: 65536KB 64-bit integer IO for ...
- POJ3094 Sky Code(莫比乌斯反演)
POJ3094 Sky Code(莫比乌斯反演) Sky Code 题意 给你\(n\le 10^5\)个数,这些数\(\le 10^5\),问这些这些数组成的互不相同的无序四元组(a,b,c,d)使 ...
- Sky Code
Sky Code 给出n个数,求选出4个数组合,使其gcd为1,,\(n<=10000\),每个数\(<=10000\). 解 理解1:容斥原理 注意到Mobius反演式子不好写出,于是我 ...
- POJ3904 Sky Code【容斥原理】
题目链接: http://poj.org/problem?id=3904 题目大意: 给你N个整数.从这N个数中选择4个数,使得这四个数的公约数为1.求满足条件的 四元组个数. 解题思路: 四个数的公 ...
- POJ 3904 Sky Code
题意:给定n个数ai, ai <= 10000, n <= 10000, 从中选出4个数要求gcd为1,这样的集合有多少个? 分析:首先总共集合nCr(n, 4) = n*(n-1)*(n ...
- POJ 3904 JZYZOJ 1202 Sky Code 莫比乌斯反演 组合数
http://poj.org/problem?id=3904 题意:给一些数,求在这些数中找出四个数互质的方案数. 莫比乌斯反演的式子有两种形式http://blog.csdn.net/out ...
随机推荐
- 使用 JDBC 驱动程序
本部分提供使用 Microsoft JDBC Driver for SQL Server 与 SQL Server 数据库建立简单连接的快速入门指导.在连接到 SQL Server 数据库之前,必须首 ...
- JavaScript | 新手村(一)变量,运算和变量方法
资料来自:JavaScript 第一步 1. 向 html 页面添加 JavaScript 1.1 内部 JavaScript 在 html 文件中的 </body> 标签前插入代码: & ...
- 使用GitHub Action进行打包并自动推送至OSS
GitHub Action 是 GitHub 于 2018 年 10 月推出的一个 CI\CD 服务. 官方文档:https://docs.github.com/cn/actions CI\CD 持续 ...
- C#页面缓存设置
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { Sessioninfo(); } Session.R ...
- C++中Try Catch中的继承
1.C++中Try Catch简介:我们编译运行程序出错的时候,编译器就会抛出异常.抛出异常要比终止程序灵活许多. 而C++异常是指在程序运行时发生的反常行为,这些行为超出了函数正常功能的范围.当程序 ...
- eclipse上点击open Perspective找不到java EE的解决办法
原因:没有安装java ee等插件 Help--->Install New software---->work with中选择All Available Sites----> ...
- Linux基础命令---nslookup查询域名工具
nslookup nslookup是一个查询DNS域名的工具,它有交互和非交互两种工作模式. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.Fedora. 1.语法 ...
- [学习总结]8、android 自定义控件 使用declare-styleable进行配置属性(源码角度)
declare-styleable:declare-styleable是给自定义控件添加自定义属性用的. 官方的相关内部控件的配置属性文档:http://developer.android.com/r ...
- vue SCSS
C:\eclipse\wks\vue\esql-ui>node -v v12.18.1 C:\eclipse\wks\vue\esql-ui>npm -v 6.14.5 直接修改p ...
- 连接 MySQL 数据库出现问题:The server time zone value ‘�й���ʱ��‘ is unrecogni....
出现问题 The server time zone value '�й���ʱ��' is unrecogni.... 解决方案 在 URL 后面加上 ?serverTimezone=UTC 如下: ...