解法一:
using namespace std;
int main()
{
int ans=0;
for(int i=1; i<=50; i++)
for(int j=i+1; j<=50; j++)
//排除七人情况
{
if(!(i>=1&&i<=7&&j>=1&&j<=7))
ans++;
}
cout<<ans;
return 0;
}
解法二:
using namespace std;
/*总共有50人参与会议,正常情况下,即每个人都会与除自已以外的所有人握手,
此时握手总数为49+48+...+1=49*(49+1)/2
现有7个人没有互相握手,这7个人本来应该握手的次数为6+5+...+1=6*(6+1)/2*/
int main()
{
cout<<49*(49+1)/2-6*(6+1)/2;
return 0;
}
延伸:鸽巢原理(抽屉原理)
第一抽屉原理
原理1: 把多于n个的物体放到n个抽屉里,则至少有一个抽屉里的东西不少于两件。
原理2:把多于mn(m乘n)+1(n不为0)个的物体放到n个抽屉里,则至少有一个抽屉里有不少于(m+1)的物体。
原理3:把无数还多件物体放入n个抽屉,则至少有一个抽屉里有无数个物体。
原理1 、2 、3都是第一抽屉原理的表述。
第二抽屉原理
把(mn-1)个物体放入n个抽屉中,其中必有一个抽屉中至多有(m—1)个物体(例如,将3×5-1=14个物体放入5个抽屉中,则必定有一个抽屉中的物体数少于等于3-1=2)。