Hankson的趣味題(藍橋杯)

2022-09-09 10:30:11 字數 1398 閱讀 6712

時間限制: 1 sec  記憶體限制: 128 mb

[提交]

[命題人:外部匯入]

題目描述

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。

題意分析:找到

設某未知正整 數x 滿足:

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

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

3, 兩個x都相等(廢話)。

這兩個條件都滿足即成立,直接在總數上+1就行了。

實現: 首先找到a1與a0的最大公因數 與b1與b0的最大公因數。

之後要明白x最大是b1 因為b1為最小公倍數。最小是1 當然下限可以是a1(應該是可以的)

注意!!! 他的資料量是1e10所以不能從1 -b1 直接遍歷 得在sqrt下判斷另一半直接同時判斷就行了;也就是大於sqrt(b1)的另一半接接著判斷。

#include

using

namespace std;

intgcd

(int a,

int b)

intmain()

} cout<

}}

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 ...

藍橋 ALGO 37 Hankson的趣味題

acm模版 這個題貌似是乙個很經典的題了 數論題,各種頭腦風暴,我也說不好,在網上找了乙個不錯的解題報告,可以好好看看,揣摩一下下吧 這個解題報告詳細的解釋了 中各種可能為 0 的情況,需要排除部分因子,剩下的就是把可行的因子的範圍連乘算一下就好了!include include using nam...