更新时间:2022-08-21 23:27:20
Catherine has a deck of n cards, each of which is either red, green, or blue. As long as there are at least two cards left, she can do one of two actions:
She repeats this process until there is only one card left. What are the possible colors for the final card?
The first line of the input contains a single integer n (1 ≤ n ≤ 200) — the total number of cards.
The next line contains a string s of length n — the colors of the cards. s contains only the characters 'B', 'G', and 'R', representing blue, green, and red, respectively.
Print a single string of up to three characters — the possible colors of the final card (using the same symbols as the input) in alphabetical order.
2
RB
G
3
GRG
BR
5
BBBBB
B
In the first sample, Catherine has one red card and one blue card, which she must exchange for a green card.
In the second sample, Catherine has two green cards and one red card. She has two options: she can exchange the two green cards for a green card, then exchange the new green card and the red card for a blue card. Alternatively, she can exchange a green and a red card for a blue card, then exchange the blue card and remaining green card for a red card.
In the third sample, Catherine only has blue cards, so she can only exchange them for more blue cards.
题目链接:http://codeforces.com/contest/626/problem/B
题意:有n张卡片,颜色有B,G,R三种,两张不动颜色的卡片合成一张第三种颜色的卡片,两张相同颜色的卡片合成该颜色的一张卡片。 按照此规则,任意组合,输出最后一张卡片的颜色,输出所有可能。
分析:模拟+规律。
①当n张卡片只有一种颜色,最后一张肯定就是该颜色。
②当n(n>2)张卡片里有两种颜色,A有(n-1)张,B只有1张,那么结果可以为B,C两种颜色。
③当n==2,且有A,B颜色卡片各一张,则最后颜色为C颜色。
④其他情况均有A,B,C这三种颜色。
下面给出AC代码:
错写判断条件,连连被卡数据QAQ!
1 #include <bits/stdc++.h> 2 using namespace std; 3 inline int read() 4 { 5 int x=0,f=1; 6 char ch=getchar(); 7 while(ch<'0'||ch>'9') 8 { 9 if(ch=='-') 10 f=-1; 11 ch=getchar(); 12 } 13 while(ch>='0'&&ch<='9') 14 { 15 x=x*10+ch-'0'; 16 ch=getchar(); 17 } 18 return x*f; 19 } 20 int n; 21 char s[255]; 22 int main() 23 { 24 n=read(); 25 cin>>s; 26 int r=0,g=0,b=0; 27 for(int i=0;i<n;i++) 28 { 29 if(s[i]=='R') 30 r++; 31 if(s[i]=='G') 32 g++; 33 if(s[i]=='B') 34 b++; 35 } 36 if(r>0&&g==0&&b==0) 37 { 38 cout<<'R'<<endl; 39 return 0; 40 } 41 if(r==0&&g>0&&b==0) 42 { 43 cout<<'G'<<endl; 44 return 0; 45 } 46 if(r==0&&g==0&&b>0) 47 { 48 cout<<'B'<<endl; 49 return 0; 50 } 51 if(r==0&&g==1&&b==1) 52 { 53 cout<<'R'<<endl; 54 return 0; 55 } 56 if(r==1&&g==0&&b==1) 57 { 58 cout<<'G'<<endl; 59 return 0; 60 } 61 if(r==1&&g==1&&b==0) 62 { 63 cout<<'B'<<endl; 64 return 0; 65 } 66 if(r>1&&g==1&&b==0) 67 { 68 cout<<"BG"<<endl; 69 return 0; 70 } 71 if(r>1&&g==0&&b==1) 72 { 73 cout<<"BG"<<endl; 74 return 0; 75 } 76 if(r==1&&g>1&&b==0) 77 { 78 cout<<"BR"<<endl; 79 return 0; 80 } 81 if(r==0&&g>1&&b==1) 82 { 83 cout<<"BR"<<endl; 84 return 0; 85 } 86 if(r==1&&g==0&&b>1) 87 { 88 cout<<"GR"<<endl; 89 return 0; 90 } 91 if(r==0&&g==1&&b>1) 92 { 93 cout<<"GR"<<endl; 94 return 0; 95 } 96 if((r>1&&g>1)||(g>1&&b>1)||(r>1&&b>1)||(r>=1&&g>=1&&b>=1)) 97 { 98 cout<<"BGR"<<endl; 99 return 0; 100 } 101 return 0; 102 }