1 条题解
-
0
首先仔细观察会发现b数组根本没有用到,所以只用输入数组,不用计算数组,只用看数组就行了,因为 所以只要维护一个数,与它相邻的数的不变就行了,这个数最小的情况下就是与它相邻的数的最小公倍数。
#include<bits/stdc++.h> #define ll long long using namespace std; ll t,n; ll a[200010]; ll b[200010]; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin>>t; while(t--){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; } for(int i=1;i<=n;i++){ cin>>b[i]; } ll sum=0; for(int i=2;i<n;i++){ ll u=__gcd(a[i],a[i+1]); ll v=__gcd(a[i],a[i-1]); ll w=u*v/__gcd(u,v); if(w<a[i]){ sum++; a[i]=w; } } if(a[1]!=__gcd(a[1],a[2])){ sum++; } if(a[n]!=__gcd(a[n],a[n-1])){ sum++; } cout<<sum<<"\n"; } return 0; }
- 1
信息
- ID
- 1244
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 9
- 标签
- (无)
- 递交数
- 14
- 已通过
- 3
- 上传者