先上题目:

B - k-GCD

Time Limit: 2000/1000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others)
SubmitStatus

Problem Description

   给出n个数a[1], a[2]...... a[n]和一个正整数k, 让你在这n个数中任取k个数并求它们的GCD, 问最大的GCD是多少。
   PS: k = 1时, GCD等于所选数本身。

Input

第一行一个整数T代表测试数据的组数。
每组测试数据有两行。
第一行有两个整数n, k;
第二行有n个整数a[1], a[2]...... a[n]:

1 <= T <= 100;
2 <= k <= n <= 10000;
1 <= a[i] <= 10000;

Output

每组数据输出一行,一个整数代表最大的GCD。

Sample Input

2
5 3
12 36 20 15 9
5 4
12 36 20 15 9

Sample Output

4
3   其实这一题原本不算难,但是为什么一开始会想不到?大概是脑子习惯地去想可能需要的时间复杂度要在O(n)~O(n^2),然后就会很容易想到底是O(n)还是O(nlogn)还是O(n^2),换而言之,我们很容易不去算时间复杂度而是下意识想题目的样子大概是什么时间复杂度,往往会忘了时间复杂度的提示就在题目里面,根本不用乱猜。
  这一题的做法是把每一个数的每一个因子都求出来然后判断所有因子中,哪一种是大于等于k的,选最大的那个因子。时间复杂度只有O(n^(3/2))。 上代码:
 #include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#define MAX 10002
using namespace std; int a[MAX];
int s[MAX];
int maxn,mm,n,k; int main()
{
int t,sq,e;
//freopen("data.txt","r",stdin);
scanf("%d",&t);
while(t--){
memset(s,,sizeof(s));
scanf("%d %d",&n,&k);
for(int i=;i<n;i++) scanf("%d",&a[i]);
mm=;
for(int i=;i<n;i++){
mm = max(a[i],mm);
sq = (int)sqrt(a[i]*1.0);
for(int j=;j<=sq;j++){
if(a[i]%j==){
s[j]++;
e = a[i]/j;
if(e != j)s[a[i]/j]++;
}
}
}
maxn=;
for(int i=;i<=mm;i++){
if(s[i]>=k) maxn = i;
}
printf("%d\n",maxn);
}
return ;
}

k-GCD

ACDream - k-GCD的更多相关文章

  1. acdream 1148 GCD SUM 莫比乌斯反演 ansx,ansy

    GCD SUM Time Limit: 8000/4000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others) SubmitStatis ...

  2. hdu1695 GCD2 容斥原理 求x属于[1,b]与y属于[1,d],gcd(x,y)=k的对数。(5,7)与(7,5)看作同一对。

    GCD Time Limit: / MS (Java/Others) Memory Limit: / K (Java/Others) Total Submission(s): Accepted Sub ...

  3. hdu1695 GCD(莫比乌斯反演)

    题意:求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1<=x<=b , 1<= y <= d). 知识点: 莫比乌斯反演/*12*/ 线性筛求莫比乌 ...

  4. gcd和ex_gcd

    gcd就是欧几里得算法,可以快速的求出俩个数的最大公因数,进而也可以求其最大公倍数(俩数之积除以最大公因数),比较简单直接看代码就好了,一般用递归版,简短精简,敲得快,但如果数剧奇葩,怕溢出,那就用递 ...

  5. HDU 1695 GCD (莫比乌斯反演)

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  6. HDU 1695 GCD (欧拉函数+容斥原理)

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  7. HDU1695 GCD (欧拉函数+容斥原理)

    F - GCD Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Stat ...

  8. 数学 赛码 1010 GCD

    题目传送门 /* 数学:官方题解 首先,数组中每个元素至少是1 然后对于任意一个询问Li, Ri, Ansi, 说明Li ~ Ri中的元素必定是Ansi的倍数,那么只需将其与Ansi取最小公倍数即可 ...

  9. BZOJ3853 : GCD Array

    1 n d v相当于给$a[x]+=v[\gcd(x,n)=d]$ \[\begin{eqnarray*}&&v[\gcd(x,n)=d]\\&=&v[\gcd(\fr ...

  10. hdu 1695 GCD(莫比乌斯反演)

    GCD Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

随机推荐

  1. 您必须先调用“WebSecurity.InitializeDatabaseConnection”方法。。。

    有如下代码: [Authorize] public ActionResult Index() { ViewBag.ShowList = ShowList.GetShowList(WebSecurity ...

  2. SuperSocket内置的命令行协议的解析

    SuperSocket\SocketBase\Protocol\TerminatorReceiveFilter.cs /// <summary> /// Filters received ...

  3. Mac safari 下iframe的hash取不到BUG

    RT http://192.168.1.66/salaryl#abc 这样的链接是取不到hash的, 需要在最后加上斜杠,如下:http://192.168.1.66/salaryl/#abc fuc ...

  4. python mysql数据库 'latin-1' codec can't encode character错误问题解决

    "UnicodeEncodeError:'latin-1' codec can't encode character ..."     This is because MySQLd ...

  5. git的使用(转)

    git 配置文件 git的配置文件位置针对所有用户:/etc/gitconfig针对当前用户: -/.gitconfig 查看配置的方法 git config --list 修改配置的方法 git c ...

  6. 模拟Queue(wait/notify)

    BlockingQueue:顾名思义,首先它是一个队列,并且支持阻塞的机制,阻塞的放入和得到数据.我们要实现LinkedBlockingQueue下面的两个方法put和take. put(anObje ...

  7. [转]rdlc报表中表达式的使用--switch和IIF范例

    本文转自:http://hi.baidu.com/oypx1234/item/5b35dec4e03a3ad697445266 =Switch( Fields!MLWHLO.Value = " ...

  8. [Luogu 1850] noip16 换教室

    [Luogu 1850] noip16 换教室 好久没有更博客了,先唠嗑一会,花了两天的空闲时间大致做完了昨年的noip真题 虽然在经过思考大部分题目都可出解(天天爱跑步除外),但是并不知道考试时候造 ...

  9. RunLoop相关知识

    RunLoop,翻译过来是运行环路.我们在创建命令行项目和创建ios项目时,发现命令行项目当最后一行代码执行完后项目就自动退出了,而ios项目确可以一直运行,知道用户手动点击退出按钮.这就是因为ios ...

  10. .Net并行计算支持嵌套事务的方法

    问题背景 一年前,我们开始利用.Net 4.0的TPL(Task Parallel Library)并行计算技术对复杂计算的功能节点进行性能优化,这些复杂计算往往会包含大量对数据库的操作.在应用TPL ...