Luogu P1072 Hankson的趣味題

2022-04-30 18:33:08 字數 1309 閱讀 1441

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的個數;

241 1 96 288

95 1 37 177662

第一組輸入資料,x可以是9、18、36、72、144、288,共有6個。

第二組輸入資料,x可以是48、1776,共有2個。

對於50%的資料,保證有1≤a0,a1,b0,b1≤10000且n≤100。

對於100%的資料,保證有1≤a0,a1,b0,b1≤2,000,000,000且n≤2000。

#includeusing namespace std;

typedef long long ll;

ll n,a0,a1,b0,b1,ans=1;

ll prime[500005],cnt;

bool off[500005];

inline void input(ll &x)

while(c>='0'&&c<='9')

x=ans*f;

}inline void output(ll x)

inline void euler()

} }inline void work(ll x)

else if(inb0==inb1)

} if(ina0==ina1)

else if(inb0==inb1) }}

int main()

if(b1!=1)work(b1);

output(ans);

putchar('\n');

} }

P1072hankson的趣味題

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

P1072 Hankson 的趣味題 數論

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

Hankson的趣味題

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