1 条题解

  • 0
    @ 2025-5-8 20:27:21

    题解

    一些人围成一圈,输入他们此时的手势(石头、剪刀、布),每次选择一个人A,那个人与他逆时针B比较手势,输得淘汰,若一样,B淘汰,每次A的选择是随机的,问最后能够赢的人的个数。

    可以看成是,若只有一种手势,则都可以赢,若有两种手势,则克其的能赢,若有三种手势,则都可以赢。

    代码:

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    using namespace std ;
     
    int main(){
    	int n ;
    	int a, b, c ;
    	char ch ;
    	while( cin >> n ){
    		a = b = c = 0 ;
    		for( int i = 0; i < n; i++ ){
    			cin >> ch ;
    			if( ch == 'C' )
    				a++ ;
    			else if( ch == 'S' )
    				b++ ;
    			else
    				c++ ;
    		}
    		if( a != 0 && b != 0 && c != 0 )
    			cout << n << endl ;
    		else{
    			if( (a == 0 && b == 0 && c != 0) || (a == 0 && c == 0 && b != 0) || (b == 0 && c == 0 && a != 0 ))
    				cout << n << endl ;
    			else{
    				if( a == 0 )
    					cout << b << endl ;
    				else if( b == 0 ){
    					cout << c << endl ;
    				}
    				else
    					cout << a << endl ;
    			} 
    		}
     
    	}
    	return 0 ;
    } 
    
    
    • 1

    信息

    ID
    1233
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者