已知 (a0, x) = a1, [b0, x] = b1
求滿足上式 x 解的個數.
因為 [b0, x] = b1,所以 x 為 b1 的約數
又 b1 最多只有 10 個質因子,所以我們可以考慮 x 的質因子組成.
當前正在考慮質因子 p
設 m[0] 表示 a0 含 p 的個數,m[1] 表示 a1 含 p 的個數,
m[2] 表示 b0 含 p 的個數,m[3] 表示 b1 含 p 的個數,ans 表示 x 含 p 的個數.
若 m[0] < m[1], 則 ans 無解;若 m[0] == m[1], 則 ans >= m[1];若 m[0] > m[1], 則 ans == m[1].
若 m[2] < m[3], 則 ans == m[3];若 m[2] == m[3], 則 ans <= m[1];若 m[2] > m[3], 則 ans 無解.
因此只需打出素數表然後列舉素數即可.
注意:1. 如果 b1 % prime[i],應該 continue,因為 b1 最多只有 10 個不同的質因子,這樣可以剪去絕大多數情況.
2. 列舉完所有素數後,若 b1 > 1,即 b1 是質數,應再計算 b1 因子的方案數.
#include using namespace std;
const int m = (int)45000;
int prime[m + 5], cnt;
bool is_prime[m + 5];
int a0, a1, b0, b1;
void get_prime()
}}void divide(int& m, int& n, int p)
}int work(int p)
int main()
if(b1 > 1) ans *= work(b1);
printf("%d\n", ans);
}return 0;
}
Hankson的趣味題
問題描述 hanks博士是bt bio tech,生物技術 領域的知名專家,他的兒子名叫hankson。現在,剛剛放學回家的hankson正在思考乙個有趣的問題。今天在課堂上,老師講解了如何求兩個正整數c1和c2的最大公約數和最小公倍數。現在hankson認為自己已經熟練地掌握了這些知識,他開始思考...
MySQL趣味題 Hankson的趣味題
思路 由於x是b1的約數,所以x的質因子一定也是b1的質因子,我們可以對b1的每個質因子p,分別計算a0,a1,b0,b1分別 包含多少個p.然後討論x可能含有幾個p即可 include include include include include include using namespace ...
Hankson的趣味題(藍橋杯)
時間限制 1 sec 記憶體限制 128 mb 提交 命題人 外部匯入 題目描述hanks 博士是bt bio tech,生物技術 領域的知名專家,他的兒子名叫hankson。現 在,剛剛放學回家的hankson 正在思考乙個有趣的問題。今天在課堂上,老師講解了如何求兩個正整數c1 和c2 的最大公...