http://acm.hdu.edu.cn/showproblem.php?pid=5072

题意:给出N个数,求有多少个三元组,满足三个数全部两两互质或全部两两不互质。

题解:

http://dtyfc.com/acm/980 我看的这个学会的……

可以先求不满足要求的三元组数量,也就是abc,a和b互质,b和c不互质。

这样就要找这n个数中,和某个数不互质的数的个数。

可以质因数分解+容斥原理,求出和某个数不互质的数的个数(也就是和这个数有相同因数的数的个数)。

还要先预处理以某个数x为因子的数的个数,cnt[x]。

具体看代码。

其实我也不是很熟,醉了。

不信你看这个博客都没有数论分类

代码:

 //#pragma comment(linker, "/STACK:102400000,102400000")
#include<cstdio>
#include<cmath>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<map>
#include<set>
#include<stack>
#include<queue>
#include<ctime>
using namespace std;
#define mz(array) memset(array, 0, sizeof(array))
#define mf1(array) memset(array, -1, sizeof(array))
#define minf(array) memset(array, 0x3f, sizeof(array))
#define REP(i,n) for(i=0;i<(n);i++)
#define FOR(i,x,n) for(i=(x);i<=(n);i++)
#define RD(x) scanf("%d",&x)
#define RD2(x,y) scanf("%d%d",&x,&y)
#define RD3(x,y,z) scanf("%d%d%d",&x,&y,&z)
#define WN(x) printf("%d\n",x);
#define RE freopen("D.in","r",stdin)
#define WE freopen("huzhi.txt","w",stdout)
#define mp make_pair
#define pb push_back
#define pf push_front
#define ppf pop_front
#define ppb pop_back
typedef long long ll;
typedef unsigned long long ull; const double pi=acos(-1.0);
const double eps=1e-; const int maxn=; int a[maxn];
int cnt[maxn];
int n; int b[maxn],bn; int att,me;
inline void attack(const int &now,const int &sum,const int &flag) {
if(now==bn) {
if(sum==)return;
// printf("sum=%d cnt[]=%d flag=%d\n",sum ,(cnt[sum]), flag);
att+=flag*(cnt[sum]);
return;
}
attack(now+,sum,flag);
attack(now+,sum*b[now],-flag);
} ll farm() {
int i,j,k;
mz(cnt);
FOR(i,,)
for(j=i; j<=; j+=i)
cnt[i]+=a[j];
ll sm=;
FOR(i,,) {
if(a[i]) {
int s=(int)sqrt((double)i);
int t=i;
bn=;
for(j=; j<=s && t>; j++){
if(t%j==){
b[bn++]=j;
while(t%j==)t/=j;
}
}
if(t>)b[bn++]=t;
att=;
me=i;
attack(,,-);
// REP(j,bn)printf("%d,",b[j]);
// printf("(i=%d , att= %d re+=%d)\n",i,att,max(0 , att-1) * (n-att));
sm+=(ll)max( , att-) * (n-att);
}
}
return (ll)n*(n-)*(n-)/ - sm/;
} int main() {
int T,i,x;
RD(T);
while(T--) {
RD(n);
mz(a);
REP(i,n) {
RD(x);
a[x]++;
}
printf("%I64d\n",farm());
}
return ;
}

hdu5072 Coprime (2014鞍山区域赛C题)(数论)的更多相关文章

  1. hdu5080:几何+polya计数(鞍山区域赛K题)

    /* 鞍山区域赛的K题..当时比赛都没来得及看(反正看了也不会) 学了polya定理之后就赶紧跑来补这个题.. 由于几何比较烂写了又丑又长的代码,还debug了很久.. 比较感动的是竟然1Y了.. * ...

  2. 2014鞍山现场赛C题HDU5072(素筛+容斥原理)

    Coprime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total ...

  3. hdu 5071(2014鞍山现场赛B题,大模拟)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5071 思路:模拟题,没啥可说的,移动的时候需要注意top的变化. #include <iostr ...

  4. hdu 5003 模拟水题 (2014鞍山网赛G题)

    你的一系列得分 先降序排列 再按0.95^(i-1)*ai 这个公式计算你的每一个得分 最后求和 Sample Input12530 478Sample Output984.1000000000 # ...

  5. hdu 5078(2014鞍山现场赛 I题)

    数据 表示每次到达某个位置的坐标和时间 计算出每对相邻点之间转移的速度(两点间距离距离/相隔时间) 输出最大值 Sample Input252 1 9//t x y3 7 25 9 06 6 37 6 ...

  6. ACM学习历程——ZOJ 3822 Domination (2014牡丹江区域赛 D题)(概率,数学递推)

    Description Edward is the headmaster of Marjar University. He is enthusiastic about chess and often ...

  7. ACM学习历程——ZOJ 3829 Known Notation (2014牡丹江区域赛K题)(策略,栈)

    Description Do you know reverse Polish notation (RPN)? It is a known notation in the area of mathema ...

  8. zoj 3822 Domination(2014牡丹江区域赛D题) (概率dp)

    3799567 2014-10-14 10:13:59                                                                     Acce ...

  9. hdu 5078 2014鞍山现场赛 水题

    http://acm.hdu.edu.cn/showproblem.php?pid=5078 现场最水的一道题 连排序都不用,由于说了ti<ti+1 //#pragma comment(link ...

随机推荐

  1. poj3696 快速幂的优化+欧拉函数+gcd的优化+互质

    这题满满的黑科技orz 题意:给出L,要求求出最小的全部由8组成的数(eg: 8,88,888,8888,88888,.......),且这个数是L的倍数 sol:全部由8组成的数可以这样表示:((1 ...

  2. Oracle 查询今天、昨日、本周、本月和本季度的所有记录

    Oracle 查询今日.昨日.本周.本月和本季度的所有记录 字段类型为date 今日 select * from 表名 where to_char(字段名,'dd')=to_char(sysdate, ...

  3. Math.Round四舍五入

    Math.Round函数四舍五入的问题   今天客户跑过来跟我说,我们程序里面计算的价格不对,我检查了一下,发现价格是经过折算后的价格,结果是可能小数位较多,而单据上只能打印两位价格,所以就对价格调用 ...

  4. eclipse+SVN文件只显示版本号,不显示时间和作者解决办法

    SVN默认是显示提交次数的 改成这样 就可以了...

  5. MVC5-6 帮助类

    视图帮助类 HtmlHelper HtmlHelper给我们封装了大量的常用方法,使我们的开发更具高效.那么其中有哪里是我们常用的呢? BingForm 生成form表单 上图简单的使用了Html.B ...

  6. EF-CodeFirst-2玩的嗨

    时间戳.复杂类型.GUID自增长 GUID自增长 GUID用于当主建那是好处多多,但是和int不同.EF不会自动识别第一个为类名+Id开头或int类型字段 去设置自增长.尴尬的GUID怎么玩呢.. D ...

  7. Win10 Theano Install Guide

    basic install guide 1. download miniconda 2. conda install libpython mingw 3. conda install theano n ...

  8. Android中如何像 360 一样优雅的杀死后台Service而不启动

    http://my.oschina.net/mopidick/blog/277813 目录[-] 一.已知的 kill 后台应用程序的方法 方法: kill -9 pid 二.终极方法,杀死后台ser ...

  9. jboss性能优化

    jboss     linux jboss 部署时优化设置: 在/conf/web.xml中通过参数指定: <session-config>          <session-ti ...

  10. #第一用Markdown编辑器#

    Markdown初次使用 This is a simple Markdown editor based on 'Markdown' it's * italic * style. it's also _ ...