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

首頁 > 學院 > 開發設計 > 正文

寒假16:算法訓練 Hankson的趣味題

2019-11-14 12:40:54
字體:
來源:轉載
供稿:網友

 算法訓練 Hankson的趣味題  時間限制:1.0s   內存限制:64.0MB      錦囊1枚舉或數論方法。錦囊2x是a1的倍數,b1的約數,可以枚舉b1所有的約數來判斷是否滿足條件。 也可以使用數論的方法,將a0, a1, b0, b1分解因數,可以找到x對于每個質因子的范圍,根據這個可以得到答案的公式(將每個質因子的范圍相乘)。問題描述  Hanks 博士是BT (Bio-Tech,生物技術) 領域的知名專家,他的兒子名叫Hankson?,F 在,剛剛放學回家的Hankson 正在思考一個有趣的問題。 今天在課堂上,老師講解了如何求兩個正整數c1 和c2 的最大公約數和最小公倍數?,F 在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 行。每組輸入數據的輸出結果占一行,為一個整數?! τ诿拷M數據:若不存在這樣的 x,請輸出0; 若存在這樣的 x,請輸出滿足條件的x 的個數;樣例輸入241 1 96 28895 1 37 1776樣例輸出62樣例說明  第一組輸入數據,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。常規的窮舉法,超時了。只過了50%的數據。沒學過高等數學,不明白提示的意思|

代碼:

import java.util.Scanner;public class Hankson的趣味題 {	public static void main(String[] args) {				Scanner sc=new Scanner(System.in);		int n=sc.nextInt();		int[] data=new int[n];				for (int i = 0; i < data.length; i++) {			int max=0;			int a0=sc.nextInt();			if(a0>max)max=a0;			int a1=sc.nextInt();			if(a1>max)max=a1;			int b0=sc.nextInt();			if(b0>max)max=b0;			int b1=sc.nextInt();			if(b1>max)max=b1;			data[i]=getCount(a0,a1,b0,b1,max);		}		for (int i = 0; i < data.length; i++) {			System.out.PRintln(data[i]);		}	}	private static int getCount(int a0, int a1, int b0, int b1,int max) {		int count=0;		for (int i = 1; i <= max; i++) {			if(gcd(i,a0)==a1&&i*b0/gcd(i,b0)==b1)				count++;		}		return count;	}	private static int gcd(int i, int j) {		if(i%j==0)			return j;		return gcd(j,i%j);	}}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绥芬河市| 习水县| 广南县| 蒙自县| 武川县| 普洱| 永宁县| 盐边县| 铁岭市| 营山县| 玛多县| 青浦区| 石城县| 彝良县| 犍为县| 广安市| 当雄县| 固原市| 库尔勒市| 铁力市| 凌源市| 竹北市| 和平县| 榆树市| 惠水县| 扎赉特旗| 茌平县| 洛浦县| 南通市| 上思县| 那曲县| 龙里县| 南宁市| 边坝县| 商城县| 长垣县| 车致| 灌南县| 铜鼓县| 武功县| 喀什市|