很奇怪的一道题,受了discuss的误导,居然当n==1的时候输出Jolly是错的,后来去掉反而正确了。。。
一个flag就搞定的东西,搞不懂为什么有些人用到排序,真是没事找事。。。
题目解析:求给出序列的各个值之差是否能覆盖1~n-1,要是能,输出:"Jolly",否则输出:"Not jolly",其实不难,只要把各个值得绝对值求出来,看能否覆盖1~n-1。
#include <stdio.h> #include <string.h> int flag[3002]; inline int myAbs(int a) { return a>0?a:(-a); } int main() { int n; int i; int x,y; while(~scanf("%d",&n)) { memset(flag,0,sizeof(flag)); scanf("%d",&x); for(i=1;i<n;i++) { scanf("%d",&y); flag[myAbs(y-x)]=1; x=y; } for(i=1;i<n;i++) if(flag[i]==0) break; if(i==n) printf("Jolly\n"); else printf("Not jolly\n"); } return 0; }