GCD on Blackboard

题目大意:给你n个数,然后在这n个数中选一个数,选中的这个数可以变成任意的数,使这n个数的gcd(最大公约数)最大。打印这个最大的gcd。
思路:这题一看貌似很复杂,其实这题只要你知道前缀和 和 后缀和的概念,这题就变得非常简单,用前缀和求出前几个的gcd,后缀和求出后几个的gcd,然后再利用前缀和 和 后缀和求出这个最大的gcd 中间空一个数,即可得到答案。注意:你还要看选中的这个数是第一个还是最后一个,需要比较这个这个的gcd 谁大,就是忘了导致wa了几发。
下面是我写的代码,不喜勿喷。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <queue>
#include <map>
#include <cstring>
#include <string>
#include <set>
#include <vector>
#include <list>
#include <deque>
#include <algorithm>
#include <stack>
#include <numeric>
#include <time.h>
#include<iomanip>
#include<sstream>
#pragma disable:4996)
using namespace std;
const long long inf = 0x7f7f7f7f;
long long GCD(long long a, long long b) { return == b ? a : GCD(b, a%b); }
const long long mod = 1e9 + ;
const double pi = acos(-);
long long a[];
long long l[];
long long r[];
int main()
{
ios_base::sync_with_stdio(false);
int n;
cin >> n;
for (int i = ; i < n; i++)
cin >> a[i];
l[] = a[];
for (int i = ; i < n; i++)
l[i] = GCD(l[i - ], a[i]);
r[n - ] = a[n - ];
for (int i = n - ; i >= ; i--)
r[i] = GCD(r[i + ], a[i]);
long long ans = ;
for (int i = ; i < n-; i++)
ans = max(GCD(l[i - ], r[i + ]), ans);
cout << max(ans,max(r[],l[n-])) << endl;
}
GCD on Blackboard的更多相关文章
- AtCoder Beginner Contest 125 解题报告
		那天晚上刚好有事就咕了. 最近的那一场E题还不会写.F题全场又只过了三个?留坑吧... A - Biscuit Generator #include <cstdio> using name ... 
- Objective-C三种定时器CADisplayLink / NSTimer / GCD的使用
		OC中的三种定时器:CADisplayLink.NSTimer.GCD 我们先来看看CADiskplayLink, 点进头文件里面看看, 用注释来说明下 @interface CADisplayLin ... 
- iOS 多线程之GCD的使用
		在iOS开发中,遇到耗时操作,我们经常用到多线程技术.Grand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法,只需定义想要执行的任务,然后添加到适当的调度队列 ... 
- 【swift】BlockOperation和GCD实用代码块
		//BlockOperation // // ViewController.swift import UIKit class ViewController: UIViewController { @I ... 
- 修改版: 小伙,多线程(GCD)看我就够了,骗你没好处!
		多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术.具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能.具有这种能力的系 ... 
- GCD的相关函数使用
		GCD 是iOS多线程实现方案之一,非常常用 英文翻译过来就是伟大的中枢调度器,也有人戏称为是牛逼的中枢调度器 是苹果公司为多核的并行运算提出的解决方案 1.一次性函数 dispatch_once 顾 ... 
- hdu1695 GCD(莫比乌斯反演)
		题意:求(1,b)区间和(1,d)区间里面gcd(x, y) = k的数的对数(1<=x<=b , 1<= y <= d). 知识点: 莫比乌斯反演/*12*/ 线性筛求莫比乌 ... 
- hdu2588 GCD (欧拉函数)
		GCD 题意:输入N,M(2<=N<=1000000000, 1<=M<=N), 设1<=X<=N,求使gcd(X,N)>=M的X的个数. (文末有题) 知 ... 
- BZOJ 2820: YY的GCD [莫比乌斯反演]【学习笔记】
		2820: YY的GCD Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1624 Solved: 853[Submit][Status][Discu ... 
随机推荐
- thymeleaf注入springboot
			thymeleaf注入springboot需要引入jar: <dependency> <groupId>org.springframework.boot</groupId ... 
- 002之MFCSocket异步编程
			当今的网络程序通用体系结构大多为C/S模式,服务器监听收到来自客户端的请求,然后响应并作出应答. 界面对话框如下,输入IP信息进行通信后再进行连接,连接成功即可开始通信.左侧为客户端,右侧为服务端. ... 
- Linux网络编程学习(三) ----- 进程控制实例(第三章)
			本节主要介绍一个进程控制的实例,功能就是在前台或者后台接收命令并执行命令,还能处理由若干个命令组成的命令行,该程序命名为samllsh. 基本逻辑就是 while(EOF not typed) { 从 ... 
- NYOJ737石子合并(二)-(区间dp)
			题目描述: 有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆.求出 ... 
- Java ArrayList调用构造方法传入"容量size"不生效,如何初始化List容量size
			创建一个ArrayList对象,传入整型参数 @Test public void arrayListConstructor(){ ArrayList<Object> objects = n ... 
- jQuery——检测滚动条是否到达底部
			一.jQuery检测浏览器window滚动条到达底部 jQuery获取位置和尺寸相关函数:$(document).height() 获取整个页面的高度:$(window).height() ... 
- 解决Windows 10 1803 April 2018 Updatete不能网络共享的问题
			Windows 10升级到1803后便不能网络共享了,现在我用的是Widnows 10 1809 Oct 2018 Update依然存在这个问题. 为了能够共享文件和文件夹需要去windows ser ... 
- Selenium WebDriver 对Cookie进行处理绕过登录验证码
			首先需要手动登录一次你的测试网站,去Chrome的F12中获取这个网站的cookie信息,找到对应的保存登录信息的cookie,接下来在代码中将上述的cookie信息通过webdriver写入的自动化 ... 
- python生成器(generator)、迭代器(iterator)、可迭代对象(iterable)区别
			三者联系 迭代器(iterator)是一个更抽象的概念,任何对象,如果它的类有next方法(next python3)和__iter__方法返回自己本身,即为迭代器 通常生成器是通过调用一个或多个yi ... 
- Python开发【第七篇】:面向对象二
			字段 class Foo: #静态字段(保存在类中) CC = 123 def __init__(self): #普通字段(保存在对象中) ... 
