哈理工(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 的,不然过不了。

原文地址:https://www.cnblogs.com/xyqxyq/p/10211347.html