HDU 3908 Triple
来源:互联网 发布:淘宝有游戏交易平台 编辑:程序博客网 时间:2024/05/16 01:14
http://acm.hdu.edu.cn/showproblem.php?pid=3908
这个应该是一道很简单的数学题了,前提是在高中的时候,来大学后,一些东西都忘的差不多了,BS下自己。
题意是:
1.在三元集合中:满足两两互质的情况。
2 不满足互质的情况。
开始想的时候是直接暴力,然后看了下数据,一定会超时。
其实这个东西在高中的时候应该很容易解决的说。
简单排列组合知识。
int co_prime[i] 表示和s[i] 互质的个数
int unco_prime[N]; 表示和s[i]不互质的个数
co_prime[i] * unco_prime[i] 表示s[i] 和一个数互质和另外一个不互质的个数,即不满足题意的个数,又因为它要求(a, b, c) and (b, a, c)是相同的,所以 / 2 需要。
然后,用所有组合减去不满足题意的个数就得到答案。
#include<stdio.h>#include<string.h>#include<stdlib.h>#define N 1000int co_prime[N];//两个数互质int unco_prime[N];//不互质int s[N];int Gcd(int a, int b){return a%b?Gcd(b,a%b):b;}int main(){int t,n,i,j,sum;scanf("%d",&t);while(t--){scanf("%d",&n);for(i=1;i<=n;i++)scanf("%d",&s[i]);for(i=1;i<=n;i++){for(j=1;j<=n;j++){if(i == j)continue;if(Gcd(s[i],s[j]) == 1)co_prime[i] ++;else unco_prime[i] ++;}}sum = 0;for(i=1;i<=n;i++)sum += co_prime[i] * unco_prime[i];printf("%d\n",n*(n-1)*(n-2)/6- sum/2);for(i=0;i<=n;i++)co_prime[i] = unco_prime[i] = 0;}return 0;}
- hdu 3908 Triple
- HDU 3908 Triple
- hdu 3908 Triple
- 【组合】HDU 3908 Triple
- HDU 3908 Triple (逆向思维)
- Triple HDU
- HDU/HDOJ 3908 Triple 多校联合7
- HDU 5517 Triple (线段树)
- triple
- Triple
- hdu 5517 Triple(二维树状数组)
- hdu 5517 Triple 二维树状数组
- HDOJ 题目3908Triple(数学)
- HDU 5517 (ACM 2015 沈阳) Triple [树状数组]
- Triple Buffering
- hdu517 Triple
- BZOJ3771: Triple
- BZOJ3771 Triple
- mysql常用函数
- jQuery 程序员速成三 之 AJAX
- 2011-8-5 8:56:49
- 七夕,你一定要做的
- 去年的今天你在哪,在做什么??
- HDU 3908 Triple
- jQuery选择器中含有空格的注意事项
- VIM标记 mark 详解
- ASP.NET重新定向网页方法比较
- 最简单的显示图片方法
- Optimizing Graphics Performance
- HDU/HDOJ 2333 Assemble Northwestern Europe 2007
- 【GLSL教程】(九)其他说明
- Linux 用户(user)和用户组(group)管理概述 转自:http://fedora.linuxsir.org/main/?q=node/91