POJ 3904 Sky Code 容斥原理
来源:互联网 发布:大芒果数据库 编辑:程序博客网 时间:2024/05/18 01:23
题目来源:POJ 3904 Sky Code
题意:选出最大公约数为1的四元组的方案
思路:容斥原理 总的方案C(n,4)减去t(1)+t(2)-t(3)+...+(-)^kt(k)
t(i)表示四元组质因子的个数为i的方案数
#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int maxn = 10010;typedef long long LL;int a[maxn];int b[maxn];int cnt[maxn];int n, m;//返回a^p mod n 快速幂bool vis[maxn];int prime[maxn]; LL C(LL n, LL m){if(n < m)return 0;LL ans = 1;for(int i = 1; i <= m; i++){ans *= n--;ans /= i;}return ans;}int main(){while(scanf("%d", &n) != EOF){memset(a, 0, sizeof(a));for(int i = 0; i < n; i++){scanf("%d", &b[i]);int x = b[i];int sum = 0;for(int j = 2; j*j <= x; j++){if(x%j == 0){prime[sum++] = j;x /= j;while(x%j == 0)x /= j;}}if(x > 1)prime[sum++] = x;for(int j = 1; j < (1<<sum); j++){int temp = 1;int num = 0;for(int k = 0; k < sum; k++){if(j&(1<<k)){temp *= prime[k];num++;}}a[temp]++;cnt[temp] = num;}}LL ans = 0;for(int i = 0; i <= 10000; i++){if(!a[i])continue;if(cnt[i]&1)ans += C(a[i], 4);elseans -= C(a[i], 4);}printf("%I64d\n", C(n, 4)-ans);}return 0;}
0 0
- POJ 3904 Sky Code 容斥原理
- poj 3904 sky code 容斥原理
- POJ 3904 Sky Code 容斥原理
- poj 3904 Sky Code【容斥原理】
- 容斥原理:poj 3904 Sky Code
- Sky Code - POJ 3904 容斥原理
- Sky Code - POJ 3904 容斥原理
- POJ 3904 Sky Code (容斥原理)
- POJ 3904 Sky Code (容斥原理)
- POJ 3904 Sky Code (容斥原理)
- poj 3904 Sky Code(容斥原理)
- [容斥原理] poj 3094 Sky Code
- POJ 3904:Sky Code _容斥原理
- POJ 3904 Sky Code 解题报告(容斥原理)
- POJ 3904 Sky Code (容斥原理)
- POJ 3904 Sky Code(容斥)
- POJ 3904 Sky Code(容斥)
- poj 3904 Sky Code 莫比乌斯反演 或 容斥原理
- hdu2680(邻接表+dij)
- POJ2503 - Babelfish - 字典树
- 0803学习
- 阿拉伯的误读与本相 妇女只能穿黑袍?
- 最高法院不予核准受暴杀佳耦女李彦死刑判决
- POJ 3904 Sky Code 容斥原理
- android 签名漏洞
- HDU 3988 Harry Potter and the Hide Story(数论-整数和素数)
- 解决ubuntu安装时,库依赖问题
- 终于把cocos3.2 对应CocosStudio的按钮回调写出来了。
- 男人患罕见“臭鱼症” 满身腥臭体味像死鱼
- 使用SQL语句创建和删除约束
- 李瑞英证实与张宏平易近辞别《往事联播》
- n个数的最小公倍数