P1072 Hankson 的趣味題 數論

2021-10-09 22:23:43 字數 1701 閱讀 8481

題目描述

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

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

1. *** 和 a0a_0a0​ 的最大公約數是 a1a_1a1​;

2. *** 和 b0b_0b0​ 的最小公倍數是 b1b_1b1​。

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

輸入格式

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

輸出格式

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

對於每組資料:若不存在這樣的 ***,請輸出 000,若存在這樣的 ***,請輸出滿足條件的 *** 的個數;

輸入輸出樣例

輸入 #1

241 1 96 288

95 1 37 1776

輸出 #162

說明/提示

樣例解釋

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

第二組輸入資料,*** 可以是 48,177648,177648,1776,共有 222 個。

資料範圍

對於 50%50\%50% 的資料,保證有 1≤a0,a1,b0,b1≤100001\leq a_0,a_1,b_0,b_1 \leq 100001≤a0​,a1​,b0​,b1​≤10000 且 n≤100n \leq 100n≤100。

對於 100%100\%100% 的資料,保證有 1≤a0,a1,b0,b1≤2×1091 \leq a_0,a_1,b_0,b_1 \leq 2 \times 10^91≤a0​,a1​,b0​,b1​≤2×109 且 n≤2000n≤2000n≤2000。

noip 2009 提高組 第二題

#include

#include

#include

#include

#include

using

namespace std;

typedef

long

long ll;

ll x, a1, a0, b1, b0;

bool

prove

(int i)

void

solve()

} cout << ans << endl;

}int

main()

P1072hankson的趣味題

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

Luogu P1072 Hankson的趣味題

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

Hankson的趣味題

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