Hankson的「逆問題」

2021-09-13 02:57:17 字數 1272 閱讀 6143

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

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

1、 x和a0的最大公約數是a1;

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

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

輸入格式

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

輸出格式

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

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

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

分析

由題目可知x的值在na0中取得,只要找到n的限定條件,再將所取得的x與b0的最小公倍數與b1比較,記錄相等的次數即可。

x與a0不能互為整數倍的關係,且x需要小於b1,以這兩條作為判定條件對na0中進行篩選,再用x與b0的最小公倍數是b1這個條件縮小範圍。

**

#include

#include

using namespace std;

#define maxsize 100

intdivisor_1

(int a,

int b)

//輾轉相除法--遞迴實現

intf1

(int a0,

int a1,

int b0,

int b1)

return count;

}void

ioc(

int a0,

int a1,

int b0,

int b1,

int n,

int count)

//輸入輸出

for(

int i =

0; i < n; i++)}

intmain()

Hankson的趣味題

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

Luogu P1072 Hankson的趣味題

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

Hankson的趣味題(藍橋杯)

時間限制 1 sec 記憶體限制 128 mb 提交 命題人 外部匯入 題目描述hanks 博士是bt bio tech,生物技術 領域的知名專家,他的兒子名叫hankson。現 在,剛剛放學回家的hankson 正在思考乙個有趣的問題。今天在課堂上,老師講解了如何求兩個正整數c1 和c2 的最大公...