pat 1005 继续3n+1猜想

#include
int main()
{
	int a[101];
	int b[10000] = { 0 };
	int t;
	int n;
	scanf("%d", &n);
	for (int i = 0; i < n; i++)
	{
		scanf("%d", &a[i]);
		t=a[i];
		if (b[t] == 1)
		{
			continue;
		}
		if (b[t]==0)
		{
			while (t != 1)
			{
				if (t % 2 == 0)
				{
					t = t / 2;
					b[t] = 1;
				}
				else
				{
					t = (t * 3 + 1) / 2;
					b[t] = 1;
		
				}
			}
		}
	}
	int c[1000];
	int j = 0;
	for (int i = 0; i < n; i++)
	{
		if (b[a[i]] == 0)
			c[j++] = a[i];
	}
	
	for (int i = 0; i < j; i++)
	{
		int temp=0;
		for (int t = i + 1; t < j; t++)
		{
			if (c[i]<c[t])
			{
				temp=c[i];
				c[i] = c[t];
				c[t] = temp;
			}
		}
	}
	for (int i = 0; i < j; i++)
	{
		if (i == j - 1)
			printf("%d\n", c[i]);
		else
			printf("%d ", c[i]);
	}

}

注意数组b和数组c的大小,如果在第三个和第四个测试点出现段错误,很有可能是数组的大小不够

你可能感兴趣的:(PTA乙级)