一、题目部分
二、解题过程
思路
(1)按照输入样例的格式对将要处理的数据进行输入;
(2)根据猜拳次数及小A、小B的出拳规律对数组进行更新和填充,这里的更新和填充指对猜拳次数i求余,求余数为出拳的周期长度;
(3)然后按照表格里猜拳的输赢规则循环比较,统计比分,详见AC答案里的compare()函数;
(4)最后输出小A、小B的比分。
提交AC答案
#include<bits/stdc++.h>
using namespace std;
int n,na,nb,a[201],b[201],cnt1,cnt2;
void compare(int a,int b)
{
if(a==0)
{
if(b==1||b==4)
cnt2++;
else if(b==2||b==3)
cnt1++;
}
else if(a==1)
{
if(b==2||b==4)
cnt2++;
else if(b==0||b==3)
cnt1++;
}
else if(a==2)
{
if(b==0||b==3)
cnt2++;
else if(b==1||b==4)
cnt1++;
}
else if(a==3)
{
if(b==0||b==1)
cnt2++;
else if(b==2||b==4)
cnt1++;
}
else if(a==4)
{
if(b==2||b==3)
cnt2++;
else if(b==0||b==1)
cnt1++;
}
}
int main()
{
scanf("%d %d %d",&n,&na,&nb);
for(int i=0;i<na;i++)
scanf("%d",&a[i]);
for(int i=0;i<nb;i++)
scanf("%d",&b[i]);
for(int i=0;i<n;i++)
{
if(i>=na)
a[i]=a[i%na];
if(i>=nb)
b[i]=b[i%nb];
}
// for(int i=0;i<n;i++)
// printf("%d ",a[i]);
//
// printf("\n");
//
// for(int i=0;i<n;i++)
// printf("%d ",b[i]);
for(int i=0;i<n;i++)
compare(a[i],b[i]);
printf("%d %d",cnt1,cnt2);
return 0;
}
三、小结
注释一下:之前所有关于coding的博客题目内容均来自于洛谷题库/题单,转侵删,以后的博客注意更加清楚地提示题目来源(其实在标题就有提示了!),可能会更换贴题方式直接放上题目链接,本博客仅为学习心得及个人记录用途,不足之处请多多谅解。