Description
GJJ有个暴富梦。
他梦想着有一天,他突然有了很多很多钱,他梦想着等他有钱了,要在自己的家里挖两个游泳池,
一个用来洗脸,一个用来洗脚。他梦想着等他有钱了,他要买两辆劳斯莱斯,每次出门时候自己
开一辆,车后面再拖一辆。
GJJ每天都沉浸在他的暴富梦中。这天他突然打听到,有个选秀节目冠军奖金100亿,他知道他的暴富梦
马上就要实现了。他去参加选秀了。
GJJ表演了一套出神入化的天鹅舞,迷倒了一大片观众和评委,赢来了一阵阵掌声。每个评委都
给他打了一个很高的分数,并且每个评委都有一个编号。但是这个选秀节目通过的条件不是比分数高低。这个奇葩的条件是:
在所有评委给选手打的分数中,如果可以经过任意的变换评委的顺序,使得每相邻的两个评委打的
分数的乘积是4的倍数,则通过,否则就失败。GJJ 现在急切的想要知道他是否通过了,你能帮帮他么。
Input
输入有多组样例,每组样例首先是一个n,代表评委的数量(2<=n<=1000000)
接下来有n个数,每个数a[i]表示评委给GJJ打的分数(0<a[i]<=1000000000)
Output
对于每组样例,如果GJJ能通过比赛(即经过任意变换顺序后,对于每个分数,如果a[i]*a[i+1)是4的倍数),输出"Pass",否则的话,输出"Not Pass"。
Sample Input
4
1 2 3 4
1 2 3 4
Sample Output
Not Pass
满足条件:
1.4的倍数的数>=奇数
2.4的倍数的数+1=奇数且没有仅为2的倍数的数
满足条件:
1.4的倍数的数>=奇数
2.4的倍数的数+1=奇数且没有仅为2的倍数的数
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<string>
#include<cmath>
#define N 50005
#define LL long long
using namespace std;
int a[33];
int main()
{
int i,t;
LL n;
while(~scanf("%d",&t))
{
int num1=0;
int num2=0;
int num3=0;
for(i=1; i<=t; i++)
{
scanf("%lld",&n);
if(n%4==0)
num1++;
else if(n&1==1)
num2++;
else
num3++;
}
if(num1>=num2)
puts("Pass");
else if(num1+1==num2&&num3==0)
puts("Pass");
else
puts("Not Pass");
}
return 0;
}
GJJ梦想通过参加一档选秀节目实现暴富。比赛中,评委给出的分数需满足特定条件:通过任意变换顺序使相邻分数的乘积为4的倍数。本文介绍了解决方案并提供代码实现。
1107

被折叠的 条评论
为什么被折叠?



