ps:可能更好的体验——传送门->题解->第一篇
前置知识
思路
我们使用组合数公式。
对于50人,是C(50,2)=1225次握手。
这7人彼此之间没有握手,所以我们需要从总数中减去他们之间可能发生的握手次数。
这7人之间可能的握手次数是C(7,2)=21次。
从总握手次数中减去这7人之间没有发生的握手次数。
所以实际的握手次数是1225-21=1204次。
代码
第一种
#include <bits/stdc++.h>
#define code using
#define by namespace
#define nfl std
code by nfl;
int main() {
cout << 1204 << endl;
return 0;
}
第二种
#include <bits/stdc++.h>
#define code using
#define by namespace
#define nfl std
code by nfl;
int C(int n, int m){//组合数计算函数
int ans=1;
for(int i=1;i<=m;++i) ans=ans*(n-m+i)/i;//根据公式计算
return ans;
}
int main() {
int ans = C(50,2)-C(7,2);
cout<<ans;
return 0;
}
通过证据