hdu6025 简单枚举即可
来源:互联网 发布:遥远的救世主 知乎 编辑:程序博客网 时间:2024/06/05 18:43
题目链接:
HDU6025
题目大意 :
就是在一个数列,取出某一个数,让他们的最大公约数最大,输出这个最大公约数。
思路:
可以定义from,to两个数组,from数组用来保存从这个数列的第一项到第一项,第一项到第二项,直到第n项的最大公约数。to数组,同理可得,用来保存最后一项直到第一项的最大公约数。再定义一个ans数组,ans【i】就储存数列的第i+1项去除以后的最大公约数。
ans[i]=gcd(from[i−1],to[i+1])
然后输出ans数组里最大的公约数就行了
代码:
#include"iostream"#include"cstdio"#include"cmath"using namespace std;const int maxn=100000+5;int gcd(int x,int y){ if(y==0) return x; else return(gcd(y,x%y));}int main(){ int T,n,a[maxn],from[maxn],to[maxn],ans[maxn],k; scanf("%d",&T); while(T--) { k=0; scanf("%d",&n); for(int i=0; i<n; i++) scanf("%d",&a[i]); from[0]=a[0]; to[n-1]=a[n-1]; for(int i=1; i<n; i++) { from[i]=gcd(from[i-1],a[i]); } for(int j=n-2; j>=0; j--) { to[j]=gcd(to[j+1],a[j]); } ans[0]=to[1]; ans[n-1]=from[n-2]; for(int i=1; i<=n-2; i++) ans[i]=gcd(from[i-1],to[i+1]); for(int i=0; i<=n-1; i++) k=max(k,ans[i]); printf("%d\n",k); } return 0;}
阅读全文
0 0
- hdu6025 简单枚举即可
- HDU6025
- HDU6025-Coprime Sequence-简单数学
- 简单枚举
- 简单枚举
- 简单枚举
- 简单枚举
- HDU6025-Coprime Sequence
- HDU6025 Coprime Sequence
- 女生赛hdu6025
- HDU6025(rmq)
- hdu6025(思维僵化)
- HDU 1172猜数字(直接暴力枚举即可)
- jquery封装 [全选] 语句,简单调用即可
- samba简单安装,无需配置即可使用
- hdu6025-构造or线段树
- 枚举简单用法
- 1.3 crypt1 简单枚举
- Unexpected token <
- Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
- effective java(18) 之接口优于抽象类
- 慢启动
- 创建继承和方法重写
- hdu6025 简单枚举即可
- 移动架构21_动画框架源码分析
- unexpected token:name(m) 報錯解決方案
- ActiveMQ(一):ActiveMQ入门案例 发送消息和接收消息
- notepad++ c++版 插件开发入门
- 关于C语言操作符
- 201312-3 最大的矩形 ccf
- mybatis数据源
- jQuery选择器和选取方法