Hdu 5207 Greatest Greatest Common Divisor(数论)
2015-04-20 17:07
591 查看
题目链接
Total Submission(s): 567 Accepted Submission(s): 257
[align=left]Problem Description[/align]
Pick two numbers ai,aj(i≠j)
from a sequence to maximize the value of their greatest common divisor.
[align=left]Input[/align]
Multiple test cases. In the first line there is an integer
T,
indicating the number of test cases. For each test cases, the first line contains an integer
n,
the size of the sequence. Next line contains n
numbers, from a1
to an.
1≤T≤100,2≤n≤105,1≤ai≤105.
The case for n≥104
is no more than 10.
[align=left]Output[/align]
For each test case, output one line. The output format is Case #x:
ans,
x
is the case number, starting from 1,
ans
is the maximum value of greatest common divisor.
[align=left]Sample Input[/align]
[align=left]Sample Output[/align]
[align=left]Source[/align]
BestCoder Round #38 ($)
题意:从n个数中,找出两个数之间的最大公约数的最大值。每个数<=100000,n<=100000。
题解:先用nlgn的方法预处理出1到10^5的数的约数。然后再统计出n个数中,每个数是多少个数的约数。最后的答案就是找所有约数中个数大于1的最大的数。
代码如下:
Greatest Greatest Common Divisor
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 567 Accepted Submission(s): 257
[align=left]Problem Description[/align]
Pick two numbers ai,aj(i≠j)
from a sequence to maximize the value of their greatest common divisor.
[align=left]Input[/align]
Multiple test cases. In the first line there is an integer
T,
indicating the number of test cases. For each test cases, the first line contains an integer
n,
the size of the sequence. Next line contains n
numbers, from a1
to an.
1≤T≤100,2≤n≤105,1≤ai≤105.
The case for n≥104
is no more than 10.
[align=left]Output[/align]
For each test case, output one line. The output format is Case #x:
ans,
x
is the case number, starting from 1,
ans
is the maximum value of greatest common divisor.
[align=left]Sample Input[/align]
2 4 1 2 3 4 3 3 6 9
[align=left]Sample Output[/align]
Case #1: 2 Case #2: 3
[align=left]Source[/align]
BestCoder Round #38 ($)
题意:从n个数中,找出两个数之间的最大公约数的最大值。每个数<=100000,n<=100000。
题解:先用nlgn的方法预处理出1到10^5的数的约数。然后再统计出n个数中,每个数是多少个数的约数。最后的答案就是找所有约数中个数大于1的最大的数。
代码如下:
#include<iostream> #include<algorithm> #include<stdio.h> #include<string.h> #include<vector> #define nn 110000 typedef long long LL; const int inf=0x3fffffff; const LL inf64=(LL)inf*inf; using namespace std; vector<int>ve[nn]; int num[nn],n; void init() { int i,j; for(i=1;i<=100000;i++) { for(j=1;(LL)i*j<=100000;j++) { ve[i*j].push_back(i); } } } int main() { init(); int t,cas=1; int i,j,x; scanf("%d",&t); while(t--) { memset(num,0,sizeof(num)); scanf("%d",&n); for(i=1;i<=n;i++) { scanf("%d",&x); for(j=0;j<(int)ve[x].size();j++) { num[ve[x][j]]++; } } for(j=100000;j>=1;j--) { if(num[j]>1) break; } printf("Case #%d: %d\n",cas++,j); } return 0; }
相关文章推荐
- hdu 5207 Greatest Greatest Common Divisor(数论)
- hdu 5207 Greatest Greatest Common Divisor(筛法求公约数)
- hdu 5207 Greatest Greatest Common Divisor 数学
- 【HDU 5207】Greatest Greatest Common Divisor —— 最大公因子
- HDU 5207 Greatest Greatest Common Divisor(暴力)
- hdu 5207 Greatest Greatest Common Divisor【筛法】【思维】
- HDU 5207 Greatest Greatest Common Divisor
- 【瞎搞】 HDU 5207 Greatest Greatest Common Divisor
- hdu 5207 Greatest Greatest Common Divisor
- HDU 5207 Greatest Greatest Common Divisor
- HDU 5207 Greatest Greatest Common Divisor
- Greatest Greatest Common Divisor hdu 5207
- HDU 5207 Greatest Greatest Common Divisor
- hdu 5207 Greatest Greatest Common Divisor
- HDOJ 5207 Greatest Greatest Common Divisor 暴力枚举
- hdu 5210 Greatest Greatest Common Divisor
- HDU 1423 Greatest Common Increasing Subsequence
- HDU 1423 Greatest Common Increasing Subsequence (最长公共上升子序列)【模板】
- GCD (Greatest Common Divisor)
- hdu 1423 Greatest Common Increasing Subsequence 最长公共上升子序列