1. 程式人生 > >哈理工(HUST)第八屆程式設計競賽--小樂樂的組合數

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