計蒜客:HZF愛鬥牛

題目:

hzf 最近迷上 QQ 遊戲歡樂鬥牛。
鬥牛的規則如下,遊戲開始的時候,每位玩家發 55 張撲克牌,每張牌都是 A-K 中的一張牌(11 表示 A,2102-10 表示對應的牌,1111-J,1212-Q,1313-K)。
每張牌都有一個點數,1101-10 分別對應其點數,111311-13 對應點數 1010
牌型分爲以下 55 種情況,牌型的優先級按照給定從上到下。

  1. 四炸——55 張牌中有 44 張牌相同 ,優先級最高。
  2. 五小牛——即五張牌點數都小於 55,且 55 張牌的點總數和小於或等於 1010,優先級次之。
  3. 牛牛——其中 33 張牌的點數和是 1010 的整數倍,另外 22 張牌的點數和是 1010 的整數倍。
  4. x(x=1,2,39)x(x=1,2,3\ldots 9)——其中 33 張牌的點數和是 1010 的整數倍,另外 22 張牌的點數和對 1010 取模爲 xx
  5. 以上情況都不是,就是無牛。
    hzf 要根據自己的牌型來決定自己的下注的倍數,但是 hzf 總是不能看出他的牌型,你能寫一個程序幫助他嗎。

輸入格式:

一行輸入 55 個空格隔開的整數。

輸出格式:

若牌型爲四炸,輸出一行quadra bomb orz
若爲五小牛,輸出一行penta calf
若爲牛牛,輸出一行you can you up
若爲牛 x,輸出一行too young too simple:calf x
若爲無牛,輸出一行gg

樣例輸入:

10 10 10 1 1

樣例輸出:

too young too simple:calf 2

樣例輸入:

10 10 10 10 9

樣例輸出:

quadra bomb orz

題解:

思路:用一個一維數組來存儲輸入的五個數字,然後根據題目要求,分別用循環語句和if語句來判斷五種情況,根據不同的情況輸出

#include<iostream>
using namespace std;
int main(void)
{
	int a[10];
	int n, flag = 0, sum = 0;
	cout << "請輸入五個數:";
	for (int i = 0; i < 5; i++)
	{
		cin >> n;
		if (n > 10)
			n = 10;
		a[i] = n;
	}
	for (int i = 0; i < 5; i++)
	{
		int N = 0;
		for (int j = 0; j < 5; j++)
		{
			if (a[i] == a[j])
				N++;
			if (N == 4)
			{
				cout << "quadra bomb orz" << endl; 
				system("pause");
				return 0;
			}
		}
	}
	for (int i = 0; i < 5; i++)
	{
		if (a[i] >= 5)
			flag = 1;
		sum = sum + a[i];
	}
	if (flag == 0 && sum <= 10)
	{
		cout << "penta calf" << endl;
		system("pause");
		return 0;
	}
	if ((sum % 10) == 0)
	{
		for (int i = 0; i < 5; i++)
		{
			for (int j = i+1; j < 5; j++)
			{
				if (((a[i] + a[j]) % 10) == 0)
				{
					cout << "you can you up" << endl;
					system("pause");
					return 0;
				}
			}
		}
	}
	for (int i = 0; i < 5; i++)
	{
		for (int j = 0; j < 5; j++)
		{
			if (i == j)
				continue;
			if (((sum - a[i] - a[j]) % 10) == 0)
			{
				cout << "too young too simple:calf " << (a[i] + a[j]) % 10 << endl;
				system("pause");
				return 0;
			}
		}
	}
	cout << "gg" << endl;
	system("pause");
	return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章