P1072hankson的趣味題

2022-06-16 16:33:09 字數 1146 閱讀 3322

hanks 博士是 bt(bio-tech,生物技術) 領域的知名專家,他的兒子名叫 hankson。現在,剛剛放學回家的 hankson 正在思考乙個有趣的問題。

今天在課堂上,老師講解了如何求兩個正整數c_1c1​和 c_2c2​的最大公約數和最小公倍數。現在 hankson 認為自己已經熟練地掌握了這些知識,他開始思考乙個「求公約數」和「求公倍數」之類問題的「逆問題」,這個問題是這樣的:已知正整數a_0,a_1,b_0,b_1a0​,a1​,b0​,b1​,設某未知正整數xx 滿足:

1. x和 a_0a0​的最大公約數是 a1​;

2. x和 b0​的最小公倍數是b1​。

hankson 的「逆問題」就是求出滿足條件的正整數x。但稍加思索之後,他發現這樣的xx 並不唯一,甚至可能不存在。因此他轉而開始考慮如何求解滿足條件的 xx 的個數。請你幫助他程式設計求解這個問題。

輸入格式:

第一行為乙個正整數 nn,表示有 n組輸入資料。接下來的n 行每行一組輸入資料,為四個正整數 a0​,a1​,b0​,b1​,每兩個整數之間用乙個空格隔開。輸入資料保證 a0​能被 a1​整除,b1​能被b_0b0​整除。

輸出格式:

共 nn行。每組輸入資料的輸出結果佔一行,為乙個整數。

對於每組資料:若不存在這樣的 xx,請輸出 00;

若存在這樣的xx,請輸出滿足條件的xx 的個數;

#includeusing

namespace

std;

inta,b,c,d,n,cnt,ans;

int prime[1000000],f[1000000

];void work(int

p)

while(b%p==0)

while(c%p==0)

while(d%p==0)

if(nand||nb>nd) ans=0

;

if(na>nb&&ncnb) ans=0

;

if((na>nb||nc=nb) ans*=1

;

if(nc==nd&&na==nb) ans*=(nd-nb+1

);

}int

main()

for(int k=1;k<=n;k++)

}

P1072 Hankson 的趣味題 數論

題目描述 hanks 博士是 bt bio tech,生物技術 領域的知名專家,他的兒子名叫 hankson。現在,剛剛放學回家的 hankson 正在思考乙個有趣的問題。今天在課堂上,老師講解了如何求兩個正整數 c1c 1c1 和 c2c 2c2 的最大公約數和最小公倍數。現在 hankson 認...

Luogu P1072 Hankson的趣味題

hanks博士是bt bio tech,生物技術 領域的知名專家,他的兒子名叫hankson。現在,剛剛放學回家的hankson正在思考乙個有趣的問題。今天在課堂上,老師講解了如何求兩個正整數c1和c2的最大公約數和最小公倍數。現在hankson認為自己已經熟練地掌握了這些知識,他開始思考乙個 求公...

Hankson的趣味題

問題描述 hanks博士是bt bio tech,生物技術 領域的知名專家,他的兒子名叫hankson。現在,剛剛放學回家的hankson正在思考乙個有趣的問題。今天在課堂上,老師講解了如何求兩個正整數c1和c2的最大公約數和最小公倍數。現在hankson認為自己已經熟練地掌握了這些知識,他開始思考...