[程式設計題]小q的歌單
這題事後搞了很久,主要是要考慮時間複雜度的問題,常規的思路是可以行通的,但是通不過所有的用例,用例範圍一旦很大,就會超出運算時間,導致程式不通過。在沒考慮楊輝三角的時候,僅通過60%的測試用例。
題目描述
小q有x首長度為a的不同的歌和y首長度為b的不同的歌,現在小q想用這些歌組成乙個總長度正好為k的歌單,每首歌最多只能在歌單中出現一次,在不考慮歌單內歌曲的先後順序的情況下,請問有多少種組成歌單的方法。
輸入描述:
每個輸入包含乙個測試用例。
每個測試用例的第一行包含乙個整數,表示歌單的總長度k(1<=k<=1000)。
接下來的一行包含四個正整數,分別表示歌的第一種長度a(a<=10)和數量x(x<=100)以及歌的第二種長度b(b<=10)和數量y(y<=100)。保證a不等於b。
輸出描述:
輸出乙個整數,表示組成歌單的方法取模。因為答案可能會很大,輸出對1000000007取模的結果。
示例1
輸入 5
2 3 3 3
輸出 9
正確答案:
//採用陣列楊輝三角 c(n,k)=c(n-1,k)+c(n-1,k-1)
#include
#include
using
namespace
std;
long
long c[105][105];
const
int mod = 1000000007;
void init()
} }int main()}}
}printf("%ld\n",sum%1000000007);
}return
0; }
時間複雜度過大(通過60%)
#include
using
namespace
std;
long
long num;
//求組合數c(m,k)個數,k>=1
int comb(int m, int k)//(c(m,k))
else
}return num;
}int main()
long
long sum = 0;
for (int i = 0; i < x; ++i) }}
cout
<< sum % 1000000007
<< endl;
return
0;}
騰訊筆試題 小Q的歌單
題目描述 小q有x首長度為a的不同的歌和y首長度為b的不同的歌,現在小q想用這些歌組成乙個總長度正好為k的歌單,每首歌最多只能在歌單中出現一次,在不考慮歌單內歌曲的先後順序的情況下,請問有多少種組成歌單的方法。輸入描述 每個輸入包含乙個測試用例 每個測試的第一行包含乙個整數,表示歌單的總長度k 1 ...
騰訊筆試 小Q的歌單
時間限制 1秒 空間限制 32768k 小q有x首長度為a的不同的歌和y首長度為b的不同的歌,現在小q想用這些歌組成乙個總長度正好為k的歌單,每首歌最多只能在歌單 現一次,在不考慮歌單內歌曲的先後順序的情況下,請問有多少種組成歌單的方法。輸入描述 每個輸入包含乙個測試用例。每個測試用例的第一行包含乙...
騰訊2018秋招筆試真題 小Q的歌單
題目描述 小 q 有 x 首長度為 a 的不同的歌和 y 首長度為 b 的不同的歌,現在小 q 想用這些歌組成乙個 總長度正好為 k 的歌單,每首歌最多只能在歌單中出現一次,在不考慮歌單內歌曲的先後順序的情況下,請問有多少種組成歌單的方法。輸入描述 每個輸入包含乙個測試用例。每個測試用例的第一行包含...