Educational Codeforces Round 11--A. Co-prime Array
2016-04-10 19:30
489 查看
A. Co-prime Array
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
You are given an array of n elements, you must make it a co-prime array in as few moves as possible.
In each move you can insert any positive integral number you want not greater than 109 in
any place in the array.
An array is co-prime if any two adjacent numbers of it are co-prime.
In the number theory, two integers a and b are
said to be co-prime if the only positive integer that divides both of them is 1.
Input
The first line contains integer n (1 ≤ n ≤ 1000)
— the number of elements in the given array.
The second line contains n integers ai (1 ≤ ai ≤ 109)
— the elements of the array a.
Output
Print integer k on the first line — the least number of elements needed to add to the array a to
make it co-prime.
The second line should contain n + k integers aj —
the elements of the array a after adding k elements
to it. Note that the new array should be co-prime, so any two adjacent values should be co-prime. Also the new array should be got from the original array a by
adding k elements to it.
If there are multiple answers you can print any one of them.
Example
input
output
题意:给出 n 个数,要求每两个相邻的数之间两两互素(互为质数),
若两个数非互素则加入一个数使之满足条件,最后输入序列。
思路:本来是枚举两个数的公约数往上递增判断其是否分别与这两个
数互素,结果错了,后来当不满足条件时,直接往两个数之间
加入 1 即可,因为 1 与任何数互素。
代码如下:
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
You are given an array of n elements, you must make it a co-prime array in as few moves as possible.
In each move you can insert any positive integral number you want not greater than 109 in
any place in the array.
An array is co-prime if any two adjacent numbers of it are co-prime.
In the number theory, two integers a and b are
said to be co-prime if the only positive integer that divides both of them is 1.
Input
The first line contains integer n (1 ≤ n ≤ 1000)
— the number of elements in the given array.
The second line contains n integers ai (1 ≤ ai ≤ 109)
— the elements of the array a.
Output
Print integer k on the first line — the least number of elements needed to add to the array a to
make it co-prime.
The second line should contain n + k integers aj —
the elements of the array a after adding k elements
to it. Note that the new array should be co-prime, so any two adjacent values should be co-prime. Also the new array should be got from the original array a by
adding k elements to it.
If there are multiple answers you can print any one of them.
Example
input
3 2 7 28
output
1 2 7 9 28
题意:给出 n 个数,要求每两个相邻的数之间两两互素(互为质数),
若两个数非互素则加入一个数使之满足条件,最后输入序列。
思路:本来是枚举两个数的公约数往上递增判断其是否分别与这两个
数互素,结果错了,后来当不满足条件时,直接往两个数之间
加入 1 即可,因为 1 与任何数互素。
代码如下:
#include <iostream> #include <cstring> #include <cstdio> #include <queue> #include <cmath> #include <utility> #include <algorithm> using namespace std; #define N 1020 #define inf 0x3f3f3f3f int num , ans[2*N]; int gcd(int a, int b) { int tmp; while (a%b){ tmp = a; a = b; b = tmp%b; } return b; } int main() { #ifdef OFFLINE freopen("t.txt", "r", stdin); #endif int i, j, k, n, m, t, x; while (~scanf("%d", &n)) { t = x = 0; for (i = 0; i < n; i++){ scanf("%d", &num[i]); } for (i = 0; i < n - 1; i++){ if (gcd(num[i], num[i + 1]) == 1){ ans[x++] = num[i]; } else{ t++; ans[x++] = num[i], ans[x++] = 1; //1 跟任何数都互素 } } ans[x++] = num[n - 1]; printf("%d\n%d", t, ans[0]); for (i = 1; i < x; i++) printf(" %d", ans[i]); printf("\n"); } return 0; }
相关文章推荐
- hibernate内部实现的探讨
- If(!a) ; try catch用法
- 卷积神经网络Convolutional Neural Networks
- 写给SCI的牛犊们
- 标准模板库(STL)之 queue 列传
- What Are Cocoa Bindings?
- 关于Unity的几种XML读取方式
- 深度卷积神经网络用于图像缩放Image Scaling using Deep Convolutional Neural Networks
- 构建之法阅读笔记04
- 第四次作业
- Effective Java 第五条:避免创建不必要的对象
- Oracle11g 新特性 虚拟列
- Activity生命周期(面试必问)
- Apache Maven 入门篇
- 在终端输入多行信息并且查找需要的信息且打印出含有该信息的行(不使用库函数)
- 关于++i和i++区别
- 电梯演讲—视频介绍
- 第六周学习进度
- TCP漏洞:半连接
- Ajax、jquery实现前后台数据交互