您的位置:首页 > 其它

CodeForces 626 B. Cards(水~)

2016-02-25 16:13 232 查看
Description

小明有n张卡片,卡片有红绿蓝三种颜色,小明可以进行两种操作,第一种是将两张不同颜色的卡片换成一张第三种颜色的卡片,第二种操作是将两张相同颜色的卡片换成一张此种颜色的卡片,问进行一系列操作后剩余的一张卡片所有可能的颜色,以字典序输出答案

Input

第一行为一整数n表示卡片数量,之后为一个长度为n的字符串表示这n张卡片的颜色(1<=n<=200)

Output

以字典序输出经过一系列操作后剩余的一张卡片可能的颜色

Sample Input

3

GRG

Sample Output

BR

Solution

简单题,假设有r张红卡,g张绿卡,b张蓝卡,那么得到红卡的情况有以下四种

1.r=n,b=0,g=0;

2.r>0,b>1,g>1;

3.r=0,b>0,g>0;

4.r>0,b>0,g>0.

得到蓝卡和绿卡的情况与得到红卡的类似,所以此题只需要得到每种颜色卡片的数量即可

Code

#include<cstdio>
#include<iostream>
using namespace std;
#define maxn 222
int n;char s[maxn];
int main()
{
while(~scanf("%d%s",&n,s))
{
int r=0,g=0,b=0;
for(int i=0;i<n;i++)
if(s[i]=='R')r++;
else if(s[i]=='G')g++;
else b++;
if(b==n||(b&&(r>1||g>1))||(!b&&r&&g)||r&&g&&b)printf("B");
if(g==n||(g&&(r>1||b>1))||(!g&&r&&b)||r&&g&&b)printf("G");
if(r==n||(r&&(b>1||g>1))||(!r&&b&&g)||r&&g&&b)printf("R");
printf("\n");
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: