HDU6025-Coprime Sequence-简单数学
2017-05-07 22:08
387 查看
能AC的错误代码
#include <iostream> #include <string.h> #include <stdio.h> #include <algorithm> #include <math.h> #include <vector> using namespace std; #define LL long long #define N 1000005 #define M 2005 #define INF 0x3f3f3f3f const double eps = 1e-10; /* 题意:去掉数组中人任意一个数,使数组gcd值最大。 思路:任选一个数 1)求不去掉这个数的数组gcd最大值 a 2)求去掉这个数的数组gcd值 b 答案为 max(a,b) */ int ans1 ; int num ; int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } int main() { int t; scanf("%d",&t); while(t--){ int n; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%d",&num[i]); } for(int i=2;i<=n;i++){ ans1[i] = gcd(num[1],num[i]); } int a=INF,b=INF; for(int i=2;i<=n;i++){ if(a>ans1[i]){ b = a; a = ans1[i]; }else if(b>ans1[i]){ b = ans1[i]; } } a = num[2]; for(int i=3;i<=n;i++){ a = gcd(a,num[i]); if(a==1) break; } printf("%d\n",max(a,b)); } }
能AC的正确代码
思路:任选一个数,不妨取第一个数 x 1)求不去掉 x 的数组gcd最大值 a,再求解 其余 n-1 个数与 x 的 gcd 最小的数 y, 求去掉y之后的数组gcd a 2)求去掉 x 的数组gcd值 b 答案为 max(a,b) #include <bits/stdc++.h> using namespace std; #define N 100005 #define INF 0x3f3f3f3f int num ; int gcd(int a,int b) { return b==0?a:gcd(b,a%b); } int main() { int t; scanf("%d",&t); while(t--){ int n; scanf("%d",&n); scanf("%d",&num[1]); scanf("%d",&num[2]); int a = INF,b = num[2] ,index; // index 记录 与num[1] gcd 最小的数 在数组中位置,b 为去掉 num[1]的数组 gcd 值 if(a>gcd(num[1],num[2])){ a = gcd(num[1],num[2]); index = 2; } for(int i=3;i<=n;i++){ scanf("%d",&num[i]); b = gcd(b,num[i]); if(a>gcd(num[1],num[i])){ a = gcd(num[1],num[i]); index = i; } } a = num[1]; for(int i=1;i<=n;i++){ if(i==index) continue; //求解 去掉 num[index]的数组gcd值 a = gcd(a,num[i]); } printf("%d\n",max(a,b)); } }
相关文章推荐
- hdu6025 Coprime Sequence(2017女生赛)
- HDU6025 Coprime Sequence【前缀GCD+后缀GCD】
- HDU6025 Coprime Sequence (思路题)
- HDU6025 Coprime Sequence (前缀后缀处理)
- HDU6025-Coprime Sequence
- HDU6025 Coprime Sequence
- HDU6025 Coprime Sequence —— 前缀和 & 后缀和
- HDU6025 Coprime Sequence【前缀GCD+后缀GCD】
- C - Coprime Sequence
- Coprime Sequence(优化)
- 2017女生赛 1003 Coprime Sequence【前缀后缀维护】
- Coprime Sequence(前后缀最大公约数)
- [cf803F] Coprime Subsequences(组合数学,容斥)
- sgu231:Prime Sum(简单数学题)
- hdu 4135 Co-prime (组合数学:容斥定理+欧拉函数)
- Coprime Sequence HDU - 6025
- HDU 6025 Coprime Sequence 前缀gcd + 后缀gcd
- (HDU 6025 女生专场)Coprime Sequence 水题
- 数学 ( 容斥原理&&求区间内互质数的个数)——Co-prime ( HDU 4135 )
- HDU6205 Coprime Sequence