问题 E: 神奇的序列
时间限制: 1 Sec 内存限制: 128 MB提交: 635 解决: 84
[提交][状态][讨论版]
题目描述
Aurora在南宁发现了一个神奇的序列,即对于该序列的任意相邻两数之和都不是三的倍数。现在给你一个长度为n的整数序列,让你判断是否能够通过重新排列序列里的数字使得该序列变成一个神奇的序列。
输入
第一行包含一个数字T(T <= 50), 表示测试数据组数。
每一组测试数据首先给出一个数字n(2 <= n <= 200) 表示序列的长度,接下来n个数ai(1<= ai <= 100) 表示该序列。
输出
每组测试数据输出一行。如果序列能通过重新排列变成一个神奇的序列,输出”pulsating!” 否则输出”day day up!”。
样例输入
2 4 1 3 2 4 6 1 2 3 6 3 27
样例输出
pulsating! day day up!
把每个数对3取余,然后记0,1,2的个数,如果有1有2没有0或者0的个数大于1和2的个数和加一则是day day up!
#include <cstdio> int main() { int t,n,s,a,ans,cut,res,flag,i; scanf("%d",&t); while(t--) { flag=1; ans=0,cut=0,res=0; for(scanf("%d",&n),i=0;i<n;i++) { scanf("%d",&a); s=a%3; if(s==0) ans++; else if(s==1) cut++; else if(s==2) res++; } if(ans>1+cut+res) flag=0; else if(ans<cut+res) { if(ans==0&&(cut!=0&&res!=0)) flag=0; } if(flag) printf("pulsating! "); else printf("day day up! "); } return 0; }