http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1756

直接暴力O(n^2logn)过不了 两两算gcd

考虑每个数的范围[1,1000]统计一下即可O(1000^2*log(1000))

Notice:1与任何数互质,需要特判(自己与自己互质)

Code1 统计

// <1756.cpp> - Wed Oct 19 08:25:53 2016
// This file is made by YJinpeng,created by XuYike's black technology automatically.
// Copyright (C) 2016 ChangJun High School, Inc.
// I don't know what this program is. #include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN=;
inline int gi() {
register int w=,q=;register char ch=getchar();
while((ch<''||ch>'')&&ch!='-')ch=getchar();
if(ch=='-')q=,ch=getchar();
while(ch>=''&&ch<='')w=w*+ch-'',ch=getchar();
return q?-w:w;
}
int a[MAXN];
int main()
{
int T=gi();
while(T--){
int n=gi(),ans=;
memset(a,,sizeof(a));
for(int i=;i<=n;i++)
a[gi()]++;
for(int i=;i<MAXN;i++)
if(a[i])
for(int j=i+;j<MAXN;j++)
if(__gcd(i,j)==)ans+=a[i]*a[j];
ans+=a[]>?(a[]-)*a[]/:;//this
printf("%d\n",ans);
}
return ;
}

Code2 vector 本以为记录一下哪些数出现过(结果发现数据水,还跑得慢一点)

// <1756.cpp> - Wed Oct 19 08:25:53 2016
// This file is made by YJinpeng,created by XuYike's black technology automatically.
// Copyright (C) 2016 ChangJun High School, Inc.
// I don't know what this program is. #include <iostream>
#include <cstdio>
#include <vector>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
const int MAXN=;
inline int gi() {
register int w=,q=;register char ch=getchar();
while((ch<''||ch>'')&&ch!='-')ch=getchar();
if(ch=='-')q=,ch=getchar();
while(ch>=''&&ch<='')w=w*+ch-'',ch=getchar();
return q?-w:w;
}
int a[MAXN];vector<int>b;
inline int gcd(register int a,register int b){
return b==?a:gcd(b,a%b);
}
int main()
{
freopen("1756.in","r",stdin);
freopen("1756.out","w",stdout);
int T=gi();
while(T--){
int n=gi(),ans=,to;
memset(a,,sizeof(a));
for(int i=;i<=n;i++)
a[gi()]++;b.clear();
for(int i=;i<MAXN;i++)
if(a[i])b.push_back(i);to=b.size();
for(int i,o=;i=b[o],o<to;o++)
if(a[i])
for(int j,k=o+;j=b[k],k<to;k++)
if(gcd(i,j)==)ans+=a[i]*a[j];
if(b[]==)ans+=a[]>?(a[]-)*a[]/:;//this
printf("%d\n",ans);
}
return ;
}

最新文章

  1. 关于有默认值的字段在用EF做插入操作时的思考
  2. Java ClassLoader基础及加载不同依赖 Jar 中的公共类
  3. 【转】JVM 堆内存设置原理
  4. Spring框架学习之第6节
  5. jquery获取div距离顶部的距离
  6. SQL从入门到基础–03 SQLServer基础1(主键选择、数据插入、数据更新)
  7. HAOI 硬币购物
  8. Spring mvc系列一之 Spring mvc简单配置
  9. Guice之IOC教程
  10. MySql 触发器的新增、修改、删除的创建
  11. Add AI feature to Xamarin.Forms app
  12. requests之headers &#39;Content-Type&#39;: &#39;text/html&#39;误判encoding为&#39;ISO-8859-1&#39;导致中文text解码错误
  13. 关于事务回滚,rollback tran到底要不要写?
  14. QT---事件系统
  15. 利用jenkins+git自动执行接口测试代码
  16. Spring学习之SpringMVC框架快速搭建实现用户登录功能
  17. 主键(primary key)和唯一索引(unique index)区别
  18. step-by-step-creating-a-sql-server-2012-alwayson-availability-group/
  19. AngularJS------报错&quot;The selector &quot;app-user-item&quot; did not match any elements&quot;
  20. alibaba/Sentinel 分布式 系统流量防卫兵

热门文章

  1. HDU - 2058 The sum problem(思路题)
  2. Python学习-列表的其它主要操作
  3. [Python3网络爬虫开发实战] 1.4.1-MySQL的安装
  4. linux netstat-查看Linux中网络系统状态信息
  5. 如何使用 Laravel Collections 类编写神级代码
  6. First C program
  7. BNUOJ 26283 The Ghost Blows Light
  8. 开发辅助网站---programcreek
  9. Linux下汇编语言学习笔记33 ---
  10. Linux操作系统下IPTables配置