传送门
本题的做法最简单的就是暴力加模拟,将求出的所有的绝对值储存在数组里(将绝对值指向下标),最后将数组检查一遍,[1,n-1]区间的是否全部为true
c++中绝对值函数就是abs,其实就是以下函数:
int abs(int a){
if(a>=0) return a;
else return -a;
}
而统计绝对值,就是以下表示:
flag[abs(a[i-1]-a[i])]=true;
绝对值检查:
for(int i=1;i<=n-1;i++){
if(flag[i]==0){
cout<<"Not jolly";
return 0;
}
}
cout<<"Jolly"<<endl;
return 0;
完整代码:
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n,a[1000010];
ll flag[1000010];
int main(){
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
for(int i=1;i<n;i++) flag[abs(a[i-1]-a[i])]=true;
for(int i=1;i<=n-1;i++){
if(flag[i]==false){
cout<<"Not jolly";
return 0;
}
}
cout<<"Jolly"<<endl;
return 0;
}