其實看到討論說到一堆除法,甚至大數等等,看了很頭痛。
比較簡便的解法就是DP。
在UVa160是求階乘的質因數出現的次數。
如果會做的話,d134這題就把質因數次數相減再乘起來就好了。
6! / (4! * 2!)
質因數2,3,5的次數
6! -> 4 2 1
4! -> 3 1 0
2! -> 1 0 0
-------------相減
0 1 1
所以是C6取2是3^1 * 5^1 = 15
當然有解出來就好了,不管是用什麼方法,
不過解題到最後還是要練求出方法對的正解,
否則一堆暴力破解會失去解題的樂趣。
一定要用 unsigned long long
我使用 一個陣列 c[101][51];
一個函式 comb(int n,int m)
{
若m>n-m則取較小的m
若c[n][m]未算過則計算 c[n][m]=comb(n,m);
return c[n][m];
}
主程式先算出所有c[i:1~100][0]=1, c[i:1~100][1]=i;
AC ,但少了 unsigned 就錯