国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

【Noip2009】hankson的趣味題

2019-11-08 18:44:54
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

題目描述

Hanks 博士是 BT (Bio-Tech,生物技術(shù)) 領(lǐng)域的知名專家,他的兒子名叫 Hankson。現(xiàn)

在,剛剛放學(xué)回家的 Hankson 正在思考一個(gè)有趣的問(wèn)題。

今天在課堂上,老師講解了如何求兩個(gè)正整數(shù) c1 和 c2 的最大公約數(shù)和最小公倍數(shù)。現(xiàn)

在 Hankson 認(rèn)為自己已經(jīng)熟練地掌握了這些知識(shí),他開(kāi)始思考一個(gè)“求公約數(shù)”和“求公

倍數(shù)”之類(lèi)問(wèn)題的“逆問(wèn)題”,這個(gè)問(wèn)題是這樣的:已知正整數(shù) a0,a1,b0,b1,設(shè)某未知正整

數(shù) x 滿足:

1. x 和 a0 的最大公約數(shù)是 a1;

2. x 和 b0 的最小公倍數(shù)是 b1。

Hankson 的“逆問(wèn)題”就是求出滿足條件的正整數(shù) x。但稍加思索之后,他發(fā)現(xiàn)這樣的

x 并不唯一,甚至可能不存在。因此他轉(zhuǎn)而開(kāi)始考慮如何求解滿足條件的 x 的個(gè)數(shù)。請(qǐng)你幫

助他編程求解這個(gè)問(wèn)題。

輸入輸出格式

輸入格式:

第一行為一個(gè)正整數(shù) n,表示有 n 組輸入數(shù)據(jù)。接下來(lái)的 n 行每

行一組輸入數(shù)據(jù),為四個(gè)正整數(shù) a0,a1,b0,b1,每?jī)蓚€(gè)整數(shù)之間用一個(gè)空格隔開(kāi)。輸入

數(shù)據(jù)保證 a0 能被 a1 整除,b1 能被 b0 整除。

輸出格式:

輸出文件 son.out 共 n 行。每組輸入數(shù)據(jù)的輸出結(jié)果占一行,為一個(gè)整數(shù)。

對(duì)于每組數(shù)據(jù):若不存在這樣的 x,請(qǐng)輸出 0;

若存在這樣的 x,請(qǐng)輸出滿足條件的 x 的個(gè)數(shù);

輸入輸出樣例

輸入樣例#1: 2 41 1 96 288 95 1 37 1776 輸出樣例#1: 6 2

說(shuō)明

【說(shuō)明】

第一組輸入數(shù)據(jù),x 可以是 9、18、36、72、144、288,共有 6 個(gè)。

第二組輸入數(shù)據(jù),x 可以是 48、1776,共有 2 個(gè)。

【數(shù)據(jù)范圍】

對(duì)于 50%的數(shù)據(jù),保證有 1≤a0,a1,b0,b1≤10000 且 n≤100。

對(duì)于 100%的數(shù)據(jù),保證有 1≤a0,a1,b0,b1≤2,000,000,000 且 n≤2000。

NOip 2009 提高組 第二題



第一次自己證明出數(shù)論類(lèi)問(wèn)題…雞凍>w<,雖然效率爆炸…不過(guò)..不過(guò),就是雞凍辣!!!


【思路】 ∵gcd(a,b)?lcm(a,b)=a?b 由題意得:lcm(x,b0)=b1 ∴x?b0=b1?gcd(x,b0) x=b1b0?gcd(x,b0) 不妨設(shè)gcd(x,b0)=m 則有{x=b1b0?m①gcd(x,b0)=m② 由②:xm與b0m互質(zhì) 結(jié)合①有:b1b0與b0m互質(zhì) 考慮到:b0m=b1x ∴b1b0與b1x互質(zhì) ∴gcd(b1b0,b1x)=1Δ 此時(shí)考慮第一個(gè)條件gcd(x,a0)=a1 易證gcd(a0a1,xa1)=1Δ

上述兩個(gè)標(biāo)了三角形的條件即是我們的結(jié)論 為了考慮枚舉時(shí)的剪枝,可以結(jié)合整除性 ∵lcm(x,b0)=b1 ∴x|b1 ∵gcd(x,a0)=a1 ∴a1|a0且a1|x

所以只要考慮即是b1的因數(shù)又是a1的倍數(shù)的x即可 同時(shí)還有一個(gè)小技巧,我們可以只去枚舉1至b1??√的i,同時(shí)考慮b1/i就能縮小枚舉范圍

hhhhhhhhhhhhh

—————————————我是萌萌的分割線————————————–

#include <cstdio>#include <algorithm>using namespace std;int a0,a1,b0,b1,x,Ans,T;int gcd(int x,int y){while(x^=y^=x^=y%=x);return y;}int main(){ scanf("%d",&T); while( T-- ){ scanf("%d%d%d%d",&a0,&a1,&b0,&b1); Ans=0; for(int i=1;i*i<=b1;i++){ if((b1%i == 0) && (i%a1 == 0) && (gcd((b1/b0),(b1/i)) == 1) && (gcd((a0/a1),(i/a1)) == 1)) Ans++; if((b1/i!=i) && (b1%i==0) && ((b1/i)%a1 == 0) && (gcd((b1/b0),i) == 1) && (gcd((a0/a1),((b1/i)/a1)) == 1)) Ans++; }
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 漯河市| 巴南区| 泰顺县| 江西省| 霍邱县| 昌图县| 荔浦县| 乌拉特中旗| 当雄县| 林甸县| 甘南县| 静海县| 绥江县| 无棣县| 新巴尔虎右旗| 航空| 湟源县| 鱼台县| 同江市| 益阳市| 临颍县| 池州市| 邹城市| 潼南县| 无极县| 建昌县| 鄂托克旗| 蒙城县| 江源县| 铅山县| 廊坊市| 康保县| 花莲县| 洛南县| 新宁县| 红桥区| 黔西| 吕梁市| 沾化县| 辽源市| 惠安县|