PC110201 Jolly Jumper //水题,hash

A sequence of n > 0 integers is called a jolly jumper if the absolute values of the differences between successive elements take on all possible values 1 through n - 1. For instance,


1 4 2 3


is a jolly jumper, because the absolute differences are 3, 2, and 1, respectively. The definition implies that any sequence of a single integer is a jolly jumper. Write a program to determine whether each of a number of sequences is a jolly jumper.

Input

Each line of input contains an integer n < 3, 000 followed by n integers representing the sequence.

Output

For each line of input generate a line of output saying ``Jolly'' or ``Not jolly''.

Sample Input

4 1 4 2 3
5 1 4 2 -1 6

Sample Output

Jolly
Not jolly

竟然WA了两次,细节处理的不好下次 做题应该在草纸上简单标注一下 导致吃个饭回来再写就忘了
下次应该尝试用Bit的Hash来做。



#include <iostream>
#include <cstdio>
#include <cstring>

#include <cmath>

using namespace std;

int flag[3001];

int main()
{
	int nums, num, before, now, minus, i, j, judge, n;
	while (cin>>nums)
	{
		n =nums;
		judge = 0;
		memset(flag, 0, sizeof(flag));
		now = before = 0;
		while (n--)
		{
			cin>>num;
			if (before == 0) 
			{
				before = num;
				continue;
			}
			else
			{
				minus = (int)fabs((double)num-(double)before);

				if (flag[minus] == 1)
				{
					judge = 1;
					before = num;
					continue;
				}
				else
				{
					flag[minus] = 1;
					before = num;
				}
			}
		}
		if (judge == 1) cout<<"Not jolly"<<endl;
		else
		{
			for (i=1; i<nums; i++)
			{
				if (flag[i]==0)
				{
					cout<<"Not jolly"<<endl;
					judge = 1;
					break;
				}
			}
			if (judge == 0) cout<<"Jolly"<<endl;
		}
		
	}	
	return 0;
}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值