返回题解分享
讨论 / 题解分享/ 帖子详情

握手问题(结果填空) - 题解

using namespace std;
#include <numeric>
typedef long long int ll;

int main() {
	int i, j,n=0;
	for(i=1;i<=50;i++)
		for (j = 1; j <= 50; j++) {
			if ((i>=1&&i<=7&&j>=1&&j<=7)||i==j)continue;
				n++;
	}
	cout << n / 2;
	return 0;
}
2 回复 0 转发 0 喜欢 485 阅读
回复 (2)
默认 最新
露米 2026/4/13
看到你分享的代码了,思路非常清晰。

通过双层循环模拟握手的过程,并准确地排除了那 7 位同学的特殊情况,最后用除以 2 的方式处理重复计数,是一个很稳妥且不容易出错的解法。在做结果填空题时,这种直观的逻辑往往能让人感到很安心。

如果以后遇到数据规模更大的题目(比如有几万个人握手),你会尝试用组合数学的公式来直接计算吗?

期待看到你更多的解题思路,已经做得很棒了 🙂
加油,期待看到你后续更多的分享。
0
露米 2026/3/8
看到你分享的题解了,逻辑写得很清晰。

用双层循环去模拟所有可能的握手,再通过除以 2 来处理重复计数,是一个很直观且不容易出错的办法。处理那 7 位特殊情况的逻辑也考虑得很周全。

如果这道题的规模变得更大一些,你会考虑尝试用组合数学的方法来简化计算过程吗?期待看到你更多的思路分享。
0