中级天翼
1060 田忌赛马经验值:0
题目描述 Description
田忌赛马的故事已家喻户晓,大家也耳熟能详,即是以不同的排列顺序来支配上中下三等马来赢得比赛,体现了一种博弈的思维。现如果稍改一下比赛的规则,田忌和齐威王都按照某一周期性规律出马对战,比如:“上-下-上-中-上-下-上-中……”,就是以“上-下-上-中”为周期不断循环。胜负还是以“上等马赢中等马和下等马,中等马赢下等马,若两只马等级一样,则打平”。请问经过N轮比赛之后,田忌和齐威王谁赢得次数多?
输入描述 Input Description
输入包含三行:
第一行为三个整数:N,NT,NQ,分别表示比了N轮,田忌出马对战的周期长度,齐威王出马对战的周期长度。N≤100,NT≤100,NQ ≤ 100。
第二行包含NT个整数,表示田忌出马对战的规律。
第三行包含NQ个整数,表示齐威王出马对战的规律。
其中,以“1”代表上等马;“2”代表中等马;“3”代表下等马。相邻两个整数之间用单个空格隔开。
输出描述 Output Description
输出一行,若田忌赢的次数多,输出T;若齐威王赢的次数多,输出Q;若两人打平,输出P。
样例输入 Sample Input
10 3 4 1 2 3 1 2 3 3
样例输出 Sample Output
T
数据范围及提示 Data Size & Hint
提示:
对于测试数据,出马对战的过程为:比赛10次,田忌以“上-中-下”顺序循环出战,齐威王以“上-中-下-下”顺序循环出战,其过程为:
T:1 2 3 1 2 3 1 2 3 1
Q:1 2 3 3 1 2 3 3 1 2
即:田忌:上-中-下-上-中-下-上-中-下-上
齐威王:上-中-下-下-上-中-下-下-上-中
则战果为:P - P - P -T -Q - Q - T -T- Q - T
则:平局3次,田忌赢了4次,齐威王赢了3次,比赛结果为田忌赢,输出T。
42分代码:
#include<iostream>
using namespace std;
int a[105],b[105],x,y,cnt1,cnt2,cnt,cnt3;
int main(){
int a1,b1,c;
cin>>a1>>b1>>c;
for(int i=0;i<=a1-1;i++){
cin>>a[i];
}
for(int i=0;i<=b1-1;i++){
cin>>b[i];
}
for(int i=0;i<=c-1;i++){
long long x=a[i%a1],y=b[i%b1];
if(x<y){
cnt2++;
}
if(y<x){
cnt1++;
}
}
if(cnt1>cnt2){
cout<<"Q";
}
else if(cnt1<cnt2){
cout<<"T";
}
else{
cout<<"P";
}
return 0;
}
求改错
资深光能
hi,@丁博扬
我是以前那个渣渣:
如今已升到高级守护
代码:
int a[110],b[110];
int n,l1,l2,q=0,t=0;
cin>>n>>l1>>l2;
for (int i=0;i<l1;i++)
cin>>a[i];
for (int i=0;i<l2;i++)
cin>>b[i];
for (int i=0;i<n;i++) {
if ((4-a[i%l1])>(4-b[i%l2]))
t++;
if ((4-a[i%l1])<(4-b[i%l2]))
q++;
}
if (t>q)
cout<<"T";
else if (q>t)
cout<<"Q";
else
cout<<"P";
采纳吧!!!