题目描述
给定一个长度为 nn 的序列 a1,a2,...,ana1,a2,...,an,你可以在任意位置(即任意数字前后)插入一个你指定的数字。请问最少添加多少次,才能使整个序列中,相邻两个元素均互质?
输入格式
输入共两行:
第一行,一个正整数 nn ,
第二行,nn 个正整数,表示给定序列a1,a2,...,ana1,a2,...,an。
输出格式
输出共一行:一个整数,表示答案。
数据范围
- 对于 30%30% 的数据,1≤n≤101≤n≤10
- 对于 60%60% 的数据,1≤n≤1031≤n≤103,1≤ai≤1031≤ai≤103
- 对于 100%100% 的数据,1≤n≤1051≤n≤105,1≤ai≤1091≤ai≤109
样例数据
输入:
4
6 3 2 8
输出:
2
说明:
最少添加两次,例如:在6和3之间插入一个5,在2和8之间插入一个3。
详见代码:
#include<bits/stdc++.h>
using namespace std;
int n;
int a[100005];
int ans = 0;
int main()
{
cin >> n;
for(int i = 1; i <= n; i++)
{
cin >> a[i];
}
for(int i = 1; i < n; i++)
{
if (__gcd(a[i], a[i + 1]) > 1)
{
ans++;
}
}
cout << ans;
return 0;
}