2 条题解

  • 1

    思路

    模拟即可,先打表,之后循环模拟双方出啥。

    code

    #include<bits/stdc++.h>
    using namespace std;
    int score[10][10]={//打表
    	{0,0,1,1,0},
    	{1,0,0,1,0},
    	{0,1,0,0,1},
    	{0,0,1,0,1},
    	{1,1,0,0,0},
    };
    int n,cyca,cycb;
    int sca,scb;
    int a[210],b[210];
    int main(){
    	cin>>n>>cyca>>cycb;
    	for(int i=0;i<cyca;i++)	cin>>a[i];
    	for(int i=0;i<cycb;i++)	cin>>b[i];
    	for(int i=0;i<n;i++){
    		int nowa=a[i%cyca],nowb=b[i%cycb];//a和b出的
    		if(nowa==nowb)	continue;//如果出的一样,不用管
    		sca+=score[nowa][nowb];//统计
    		scb+=score[nowb][nowa];
    	}
    	cout<<sca<<" "<<scb;
    	return 0;
    }
    
    • 0
      @ 2024-11-27 13:18:39

      暴力枚举即可

      #include<bits/stdc++.h>
      using namespace std;
      int a[100000],b[100000];
      int main()
      {
      	int n,m,l,i,j,g=0,k=0;
      	cin>>n>>m>>l;
      	for(i=1;i<=m;i++)
      	{
      		cin>>a[i];
      	}
      	for(i=1;i<=l;i++)
      	{
      		cin>>b[i];
      	}
      	for(i=m+1;i<=1000;i=i+m)
      	{
      		for(j=i;j<=i+m-1;j++)
      		{
      			a[j]=a[j-i+1];
      		}
      	}
      	for(i=l+1;i<=1000;i=i+l)
      	{
      		for(j=i;j<=i+l-1;j++)
      		{
      			b[j]=b[j-i+1];
      		}
      	}
      	for(i=1;i<=n;i++)
      	{
      		if((a[i]==0&&b[i]==2)||(a[i]==0&&b[i]==3))
      		{
      			g++;
      		}
      		if((a[i]==1&&b[i]==0)||(a[i]==1&&b[i]==3))
      		{
      			g++;
      		}
      		if((a[i]==2&&b[i]==1)||(a[i]==2&&b[i]==4))
      		{
      			g++;
      		}
      		if((a[i]==3&&b[i]==2)||(a[i]==3&&b[i]==4))
      		{
      			g++;
      		}
      		if((a[i]==4&&b[i]==0)||(a[i]==4&&b[i]==1))
      		{
      			g++;
      		}
      		if((b[i]==0&&a[i]==2)||(b[i]==0&&a[i]==3))
      		{
      			k++;
      		}
      		if((b[i]==1&&a[i]==0)||(b[i]==1&&a[i]==3))
      		{
      			k++;
      		}
      		if((b[i]==2&&a[i]==1)||(b[i]==2&&a[i]==4))
      		{
      			k++;
      		}
      		if((b[i]==3&&a[i]==2)||(b[i]==3&&a[i]==4))
      		{
      			k++;
      		}
      		if((b[i]==4&&a[i]==0)||(b[i]==4&&a[i]==1))
      		{
      			k++;
      		}
      	}
      	cout<<g<<" "<<k;
      	return 0;
      }
      
      • 1

      [NOIP2014 提高组] 生活大爆炸版石头剪刀布

      信息

      ID
      468
      时间
      1000ms
      内存
      256MiB
      难度
      7
      标签
      递交数
      23
      已通过
      9
      上传者