计蒜客 T1096 石头剪刀布--C语言

Posted MitJJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计蒜客 T1096 石头剪刀布--C语言相关的知识,希望对你有一定的参考价值。

计蒜客 - T1096 - 石头剪刀布


题目

石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。

一天,小 AA 和小 BB 正好在玩石头剪刀布。已知他们的出拳都是有周期性规律的,比如:“石头-布-石头-剪刀-石头-布-石头-剪刀……”,就是以“石头-布-石头-剪刀”为周期不断循环的。请问,小 AA 和小 BB 比了 NN 轮之后,谁赢的轮数多?

思路

存储小A和小B的出拳规律 然后进行比较 因为他们的出拳是有周期性规律的 所以循环两个人的出拳规律直到比到N轮

代码

#include <stdio.h>

void main()

	int n, a, b, i,j=0,k=0, al[100], bl[100],aw=0,bw=0;
	scanf("%d %d %d", &n, &a, &b);//获取比较的轮数,小 AA 出拳的周期长度,小 BB 出拳的周期长度。
	//获取小A出拳规律
	for (i = 0; i < a; i++) 
		scanf("%d",&al[i]);
	
	//获取小B出拳规律
	for (i = 0; i < b; i++) 
		scanf("%d",&bl[i]);
	
	//循环两个人的出拳规律进行比较
	for (i = 1; i <= n; i++) //比的轮数
		if ((i > a) && (i % a == 1)) j = 0;//当轮数大于小A的周期长度并且轮数对周期长度取模等于一时,小A的出拳周期规律从头开始。
		if ((i > b) && (i % b == 1)) k = 0;//当轮数大于小B的周期长度并且轮数对周期长度取模等于一时,小B的出拳周期规律从头开始。
		if (al[j] == bl[k]) //如果两个人出的一样就直接进入下一轮。
			j++, k++;
			continue;
		
		//如果两个人出拳满足这些情况就是小A赢。
		else if (((al[j] == 0) && (bl[k] == 2)) || ((al[j] == 2) && (bl[k] == 5)) || ((al[j] == 5) && (bl[k] == 0))) aw++;
		else bw++;//否则不满足就是小B赢
		j++, k++;
	
	if (aw > bw) printf("A");
	if (aw < bw) printf("B");
	if (aw == bw) printf("draw");

以上是关于计蒜客 T1096 石头剪刀布--C语言的主要内容,如果未能解决你的问题,请参考以下文章

C语言编程小游戏「石头剪刀布」!源码分享~

ZKP应用:石头剪刀布游戏

《石头、剪刀、布》幼儿园教案

石头剪刀布游戏

石头剪刀布游戏

石头剪刀布游戏