top1编程
← 返回题目
题解

【入门】石头剪刀布?

4 条题解

  • 0
    @ 2026-7-29 20:23:26
    #include<bits/stdc++.h>//#403】石头剪刀布?
    /*
    	思路:将所有小a赢的情况都列举出来并计数,再把小b赢的情况都列举出来并计数
    			最后根据他们的胜场数决定谁是最后的赢家(需要注意平局的情况)
    	问题1、小a赢的情况有哪些?
    		答:a == 1 && b == 2、a == 2 && b == 3、a == 3 && b == 1
    	问题2、小b赢的情况有哪些?需要像小a一样都列举出来吗?
    		答:不用都列举出来,因为除了以上这些情况,剩余的只要a != b都算小b赢的
    */
    
    using namespace std;
    int main(){
    	//基本输入要很熟练
    	int n, a, b, ca = 0, cb = 0;
    	cin >> n;
    	while (n--) {//进行了n场猜拳游戏
    		cin >> a >> b;
    		//列举小a赢的情况
    		if ((a == 1 && b == 2) || (a == 2 && b == 3) || (a == 3 && b == 1))  
    			ca++;
    		else if (a != b) //剩余的情况下,a!=b就表示不是平局,小b赢
    			cb++;
    	}
    	//下面根据ca和cb记录的值来判断谁赢了,输出对应的字符串
    	if (ca > cb) cout << "a win";//小a赢得多
    	else if (ca < cb) cout << "b win";//小b赢得多
    	else cout << "tie";//平局
    	return 0;
    }
    
    • 0
      @ 2026-7-29 0:06:27
      #include <bits/stdc++.h>
      using namespace std;
      int n,m,k,s;
      int main()
      {
      	//对局情况由n m的对局总和产生
      	cin>>n>>m>>k;
      	s=n/k+m/k;
      	if(s==0){
      		cout<<-1;
      	}
      	else{
      		cout<<s;
      	}
      	return 0;
      }
      
      • 0
        @ 2026-7-29 0:06:21
        #include<bits/stdc++.h>
        using namespace std;
        int main(){
        	int n,x,y,s=0,c=0;
        	cin>>n;
        	for(int i=0;i<n;i++){//n个回合 
        		cin>>x>>y;
        		//小a赢的情况
        		if((x==1&&y==2)||(x==2&&y==3)||(x==3&&y==1)){
        			s++;
        		}
        		else if(x!=y){//不是平局,剩下小b赢的数量
        			c++;
        		}
        	}
        	if(s>c){//小a赢的多
        		cout<<"a win";
        	}
        	else if(s<c){//小b赢的多
        		cout<<"b win";
        	}
        	else{//一样多
        		cout<<"tie";
        	}
        	return 0;
        }
        
        • 0
          @ 2026-7-28 23:23:39
          #include<bits/stdc++.h>
          using namespace std;
          int main(){
          	int n,x,y,s=0,c=0;
          	cin>>n;
          	for(int i=0;i<n;i++){//n个回合 
          		cin>>x>>y;
          		//小a赢的情况
          		if((x==1&&y==2)||(x==2&&y==3)||(x==3&&y==1)){
          			s++;
          		}
          		else if(x!=y){//不是票据,剩下小b赢的数量
          			c++;
          		}
          	}
          	if(s>c){//小a赢的多
          		cout<<"a win";
          	}
          	else if(s<c){//小b赢的多
          		cout<<"b win";
          	}
          	else{//一样多
          		cout<<"tie";
          	}
          	return 0;
          }
          
          • 1