哈理工(HUST)第八届程序设计竞赛--小乐乐的组合数
这道题目是一道数学题,我们可以假设n为7,m为14。
这样的话我们就可以很清晰地看到7和7可以拼接在一起,这是一对,然后是7和14拼接在一起,第二对。
我们可以直接让n/7,m/7,这样就是1*2,就得到了二。
我们还可以知道,1可以和6拼,1可以和13拼,我们可以用循环从一找到六,查看 n和m里面总共有几对。
然后就是n和m模7之后的 余数了,每一个余数,都可以和n和m中的1~6循环拼接一次,所以我们要直接在循环语句
里面加上这一句,然后就是余数和余数的拼接了,我们直接把它加在可以乘上的次数之上就可以了,还是上代码吧。
#include <iostream>
#define ll long long
using namespace std;
int main()
{
ll n,m;
cin>>n>>m;
ll ans=0;
for (int i=1;i<=6;i++) {
ll x=n/7+(((n%7)>=i)?1:0);
ll y=m/7+(((m%7)>=(7-i))?1:0);
ans+=x*y;
}
ans+=(n/7)*(m/7);
cout<<ans<<endl;
return 0;
}
值得注意的一点是,n和m都要开成long long 的,不然过不了。