CF894C Marco and GCD Sequence
题目链接:http://codeforces.com/contest/894/problem/C
题目大意:
按照严格递增的顺序给出 \(m\) 个数作为公因数集,请你构造出一个数列,对于数列中的任意连续子段,其公因数都在题目给出公因数集中;如果无法构造出合格的数列则输出 “-1” 。
知识点: (void)
解题思路:
如果公因数集中最小的数不能整除集合中的所有数,则输出 “-1”,设最小的数是 \(x_{1}\),其不能整除的数是 \(x_{i}\) ,很明显你构造出来的数列中一定存在 \(gcd(i_{1} , ... , j_{1}) = x_{1}, gcd(i_{2}, ... , j_{2}) = x_{i}\),对于 \( i = min(i_{1}, i_{2}), j = max(j_{1}, j_{2})\),存在 \(gcd(i, ... , j) = gcd(x_{1},x_{i}) < x_{1}\) ,这与题目中 \(x_{1}\) 最小的设定相矛盾。
如果公因数集中最小的数能整除集合中的所有数,构造一个合法的数列的方法就是:把公因数集照抄过去,然后保证除了 “第一个数” 以外的每一个数的旁边都有一个 “第一个数”。
AC代码:
#include <bits/stdc++.h>
using namespace std;
const int maxn=+;
int inp[maxn]; int main(){
int m;
scanf("%d",&m);
for(int i=;i<m;i++) scanf("%d",&inp[i]);
bool can=true;
for(int i=;i<m;i++){
if(inp[i]%inp[]!=) can=false;
}
if(can){
printf("%d\n",*m);
for(int i=;i<m;i++){
if(i!=) printf(" ");
printf("%d %d",inp[],inp[i]);
}printf("\n");
}
else
printf("-1\n");
return ;
}
CF894C Marco and GCD Sequence的更多相关文章
- codeforces #447 894A QAQ 894B Ralph And His Magic Field 894C Marco and GCD Sequence
A.QAQ 题目大意:从给定的字符串中找出QAQ的个数,三个字母的位置可以不连续 思路:暴力求解,先找到A的位置,往前扫,往后扫寻找Q的个数q1,q2,然 后相乘得到q1*q2,这就是这个A能够找到的 ...
- Codeforces 894.C Marco and GCD Sequence
C. Marco and GCD Sequence time limit per test 1 second memory limit per test 256 megabytes input sta ...
- Codeforces Round #447 (Div. 2) C. Marco and GCD Sequence【构造/GCD】
C. Marco and GCD Sequence time limit per test 1 second memory limit per test 256 megabytes input sta ...
- codeforces 894C - Marco and GCD Sequence - [有关gcd数学题]
题目链接:https://cn.vjudge.net/problem/CodeForces-894C In a dream Marco met an elderly man with a pair o ...
- 【Codeforces Round #447 (Div. 2) C】Marco and GCD Sequence
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把gcd(a[1..n])放在输入的n个数之间. [代码] /* 1.Shoud it use long long ? 2.Have ...
- AGC 022 B - GCD Sequence
题面在这里! 锻炼脑子的小构造题... 一开始被 a[]<=30000 且 序列 gcd = 1所困扰,但是发现这并没有什么,因为我接下来发现了一种总是能构造出 序列和是6的倍数的方案. 首先如 ...
- Codeforces Round #447 (Div. 2) 题解 【ABCDE】
BC都被hack的人生,痛苦. 下面是题解的表演时间: A. QAQ "QAQ" is a word to denote an expression of crying. Imag ...
- Codeforces Round #447 (Div. 2)
我感觉这场CF还是比较毒的,虽然我上分了... Problem A QAQ 题目大意:给你一个由小写字母构成的字符串,问你里面有多少个QAQ. 思路:找字符串中的A然后找两边的Q即可,可以枚举找Q, ...
- Codeforces #447 Div.2 Tutorial
Problem A:QAQ 给一个字符串,求出可非连续的QAQ序列有多少个. Analysis:比较水的一道题,记录每一个Q的位置,预处理A的个数即可 然而还是fst了,原因是未考虑一个Q都没有的极端 ...
随机推荐
- 如何在Spring boot中修改默认端口
文章目录 介绍 使用Property文件 在程序中指定 使用命令行参数 值生效的顺序 如何在Spring boot中修改默认端口 介绍 Spring boot为应用程序提供了很多属性的默认值.但是有时 ...
- java 之 javaBean
什么是JavaBean? JavaBean是特殊的Java类,使用J ava语言书写,并且遵守JavaBean API规范. JavaBean与其它Java类相比而言独一无二的特征: 提供一个默认的无 ...
- 标准库模块time,datetime
在Python中,通常有这几种方式来表示时间: 1)时间戳 2)格式化的时间字符串 3)元组(struct_time)共九个元素. 由于Python的time模块实现主要调用C库,所以各个平台可能有所 ...
- 【Linux常见命令】touch命令
touch - change file timestamps touch [文件名] 就是“摸”一下文件,如果文件不存在,就建立新文件:如果文件存在,就改变文件的访问时间atime等时间戳信息. 语法 ...
- TensorFlow框架 入门笔记
背景 略 基础 介绍 略 TensorFlow安装 link TensorFlow 主要概念 使用图(graph)来表示计算任务(执行流程). 在被称之为会话(session)的上下文(context ...
- webpack前端构建angular1.0!!!
webpack前端构建angular1.0 Webpack最近很热,用webapcak构建react,vue,angular2.0的文章很多,但是webpack构建angualr1.0的文章找来找去也 ...
- 5分钟入门pandas
pandas是在数据处理.数据分析以及数据可视化上都有比较多的应用,这篇文章就来介绍一下pandas的入门.劳动节必须得劳动劳动 1. 基础用法 以下代码在jupyter中运行,Python 版本3. ...
- Shell脚本(一)入门
开始学习Shell脚本. #!/bin/bash ]; then echo "you are not root" else echo "you are root" ...
- C. p-binary(二进制暴力)
\(设最后的答案为t,那么有\) $$2^+2^+...2^+tp=n$$ \(那我们完全可以枚举这个t,判断n-tp(我们下面记为z)能刚好被t个二进制表示\) \(首先,z如果小于t,那一定无法表 ...
- java读源码之 Queue(ArrayDeque,附图,希望能一起交流)
除了并发应用(并发包下的代码我之后会专门写),Queue在JavaSE5中仅有的两个实现是LinkedList和PriorityQueue,它们的差异在于排序行为而不是性能.1.6时新增了一个实现Ar ...