對於本題的因數m,只需要將其化為素因子的乘積形式,其中每乙個素因子的個數為mi,之後只需要求得每乙個素因子pi在組合數中的個數ci,然後將取ci/mi中的最小的那個,就是該因數在組合數中的個數。
**如下:
/** fafu1079.c
** created on: 2011-10-9
* author: bjfuwangzhu
*/#include
#include
#include
#define nmax 31625
int flag[nmax], prime[nmax], pfactor[nmax], cpfactor[nmax];
int plen, cplen;
//打素數表
void mkprime()
for (j = 0; (j < plen) && (i * prime[j] < nmax); j++) }}
}//將k化成素因子的乘積的形式
void findfactor(int k)
pfactor[cplen] = prime[i];
cpfactor[cplen++] = cnt;}}
if (k > 1) }//
獲得素因子p在1*2*··n中的個數
int getnum(int n, int m)
return res;}//
獲得素因子是在組合數中的個數,
//並憑藉該素因子在因數k中的個數,得到該因數k在組合數中的個數
int cal(int i, int n, int m)
int main()
}printf("
%d\n
", res);
}return
0;}
fafu 1252 指數冪序列
view code fafu 1252 指數冪序列 這題題意很清楚,3的正整數指數冪序列1,3,9,27,81,則第 i 小的組合分別為,若第i 小的組合 的最大乙個數字 n 則前面所有數和來的大,這個可以 自己推看看 我沒推出來,不過自己列一些組合出來,再yy下,應該是這樣的 因此可用2 進製數做...
1079 活字印刷
題目描述 你有一套活字字模 tiles,其中每個字模上都刻有乙個字母 tiles i 返回你可以印出的非空字母序列的數目。注意 本題中,每個活字字模只能使用一次。示例 1 輸入 aab 輸出 8 解釋 可能的序列為 a b aa ab ba aab aba baa 示例 2 輸入 aaabbc 輸出...
hdu1079博弈 規律
不論是月份加一,還是日期加一,奇偶性 月 天 都會改變,2月也是一樣,9月30日和11月30日例外。那麼目標日期是11月4日,為奇數。初始日期如果為偶數的話,先者必勝。考慮特殊是日期,兩個特殊日期本來為奇數,移動一步還是奇數。那麼會不會在中途經過這兩個日期呢。如果本來為偶數,如果經過特殊日期就會改變...