時間限制: 1 sec
記憶體限制: 128 mb
提交: 120
解決: 51 [
提交][
狀態][
討論版]
dota中的英雄卡爾的技能說明如下,他擁有3種不同的元素(冰,雷,火),每次他需要釋放技能的時候,他要先選擇3次元素來決定釋放技能的型別(比如,他可以選擇火+火+火或冰+雷+火等等),生成技能的型別由選擇的元素中各個元素的比例決定,比如選擇冰+冰+雷和選擇冰+雷+冰會生成同樣的技能,這種機制下,卡爾一共擁有10個技能。
冰+冰+冰:急速冷卻
冰+冰+雷:幽靈漫步
冰+冰+火:寒冰之牆
雷+雷+冰:強襲颶風
雷+雷+雷:電磁脈衝
雷+雷+火:靈動迅捷
火+火+火:炎陽衝擊
火+火+雷:混沌隕石
冰+雷+火:超震聲波
火+火+冰:熔爐精靈
現在,為了加強卡爾,使可供選擇的元素達到n個(3<=n<=10^12),選擇的次數達到m次(3<=m<=10^12),那麼卡爾頭疼了,他到底能擁有多少種不同的技能呢?
多組資料
每組資料報含兩個整數,n和m
對於每組資料輸出一行,即對應的結果(答案對10007取模)
3 33 4
1015
思路:把幾次選擇看成相同的小球,每個屬性看成不同的盒子,小球入盒,盒可為空。用lucas求解。用白書上的板子死活不對,無奈,從網上找了一套板子。
上**:
#include//lucas定理的板子
using namespace std;
typedef long long ll;
ll f[10008];
const int p=10007;
void init()
ll pow(ll a,int b)
return ans;
} ll c(ll a,int b)
ll lucas(ll n,ll m)
int main()
return 0;
}
XDOJ括號匹配
類別 字串處理 時間限制 2s記憶體限制 1000kb 問題描述 表示式中的合法括號為 這三種括號可以按照任意的次序巢狀使用。請寫乙個程式,判斷給定表示式中的括號是否匹配,既左右括號順序和數量都匹配。輸入說明 輸入為乙個表示式字串,長度不超過50。輸出說明 對輸入的表示式,若其中的括號是匹配的,則輸...
XDOJ快速排序
問題描述 採用快速排序演算法,排序輸入的n個整數,prvotkey 樞軸 每次選取陣列第乙個數。輸出快速排序第一趟排序的結果。輸入格式 輸入的第一行包括乙個整數n 1 n 100 接下來的一行包括n個整數,空格隔開。輸出格式 按照要求排序後輸出,由空格分隔。樣例輸入 50 10 90 30 70 4...
XDOJ 分配寶藏
問題描述 兩個尋寶者找到乙個寶藏,裡面包含n件物品,每件物品的價值分別是w 0 w 1 w n 1 suma代表尋寶者a所獲物品價值總和,sumb代表尋寶者b所獲物品價值總和,請問怎麼分配才能使得兩人所獲物品價值總和差距最小,即兩人所獲物品價值總和之差的絕對值 suma sumb 最小。輸入說明 輸...