这思路错在哪
查看原帖
这思路错在哪
1270895
AK_NOIMPOS楼主2025/6/27 22:12

根据相邻数之差计算gcd,样例没啥毛病,但WA了

#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+100;
int n;
int a[N];
int ans=1;
int gcd(int a,int b){
	if(a%b==0)return b;
	else return gcd(b,a%b);
} 
int b[N];
signed main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	int num=1;
	for(int i=1;i<=n;i++){
		int cnt=abs(a[i]-a[i-1]);
		if(num!=1&&gcd(cnt,num)==1){
			ans++;
			num=1;
		}
		else num=cnt;
	}
	cout<<ans;
	return 0;
}

2025/6/27 22:12
加载中...