(15、16)/48(5_21) 编程

1、查找输入整数二进制中1的个数

int sreach1(int num)
{
	int count = 0;
	while (num)
	{
		count++;
		num = num&(num - 1);
	}
	return count;
}

2、手套

int findMinimum(int n, vector<int> left, vector<int> right) {
	int left_sum = 0, left_min = INT_MAX;
	int right_sum = 0, right_min = INT_MAX;

	int sum = 0;
	for (int i = 0; i < n; ++i) {
		if (left[i] * right[i] == 0) {
			sum += left[i] + right[i];
		}
		else {
			left_sum += left[i];
			left_min = left_min < left[i] ? left_min : left[i];
			right_sum += right[i];
			right_min = right_min < right[i] ? right_min : right[i];
		}
	}
	return sum + min(right_sum - right_min + 1, left_sum - left_min + 1) + 1;
}

3、完全数的计算

int Count_of_Perfect_Number(int n)
{
	int count = 0, sum = 0;
	for (int i = 2; i <= n; ++i)
	{
		for (int j = 1; j<i; ++j)
		{
			if (i%j == 0)
				sum += j;
		}
		if (sum == i)
			count++;
		sum = 0;
	}
	return count;
}

4、扑克牌大小

string FindMax(const string& str) {
	if (str.find("joker JOKER") != string::npos)
		return "joker JOKER";

	int dash = str.find('-');

	string str1 = str.substr(0, dash);
	string str2 = str.substr(dash + 1);

	int str1_count = count(str1.begin(), str1.end(), ' ') + 1;
	int str2_count = count(str2.begin(), str2.end(), ' ') + 1;

	string str1_f = str1.substr(0, str1.find(' '));
	string str2_f = str2.substr(0, str2.find(' '));

	if (str1_count == str2_count)
	{
		string str_ = "345678910JQKA2jokerJOKER";
		if (str_.find(str1_f)>str_.find(str2_f))
			return str1;
		return str2;
	}

	if (str1_count == 4)
		return str1;
	else if (str2_count == 4)
		return str2;

	string s = "ERROR";
	return s;
}

int main() {
	string str, res;
	while (getline(cin, str)) {
		res = FindMax(str);
		cout << res << endl;
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值