题目如下:
题目类型:数学类,思维类。
AC代码如下:
#include<iostream>
#define ll long long
using namespace std;
int main()
{
int a,b;
ll sum = 0;
cin>>a>>b;
for(int i = 1;i<=90;i++)
{
for(int j = 1;j<=90;j++)
{
if(a*i+b*j==270)
{
//cout<<i<<' '<<j<<endl;
if(i>=4&&j>=3)
sum+=(i-1)*(i-2)*(i-3)/6*(j-1)*(j-2)/2;
}
}
}
cout<<sum<<endl;
}
代码详解:
1.每场比赛90min,一共打了三场比赛——》总计时间90*3 = 270 min;
2.Q,W,E,R每人上场的总时间可以被a整除;D,F,B每人上场的总时间可以被b整除;
3.Q,W,E,R,D,F都上过场;
首先,我们可以跑个遍历,找到符合条件的i与j,使a*i+b*j==270(满足条件1与2)。
其次我们可以用数学的排列组合(插板法)得到答案,特别需要注意要多-1(请看表达式)
(i-1)*(i-2)*(i-3)/6*(j-1)*(j-2)/2
因为要满足条件3 ,排列组合要忽略带0的
还有一个需要注意的地方:
if(i>=4&&j>=3)
还是因为要满足条件3。
最后感谢您的阅读!!!