WUSTOJ 1266: gcd和lcm

参考

1naive1的博客

Description

  已知a,b的最大公约数为x,也即gcd(a,b)=x; a,b的最小公倍数为y,也即lcm(a,b)=y.给出x,y.求满足要求的a和b一共有多少种。

Input

  多组测试样例。每组给两个整数x,y.(1<=x<=100000,1<=y<=1000000000).

Output

  对于每个测试样例,输出一个整数,表示满足要求的(a,b)的种数。

Sample Input

3 60
2 2

Sample Output

4
1

HINT

  题目数据范围做了少许改动。

分析

  1. 当最大公约数(x)和最小公倍数(y)相同时,ab的取值只能有一种情况,即a = b = x = y
  2. 如果存在ab,则a * b * x = y,那么y % x = 0,因此如果余数不为0,那么种数为0
  3. 如果存在ab,那么x * z = ya * b = z,因此,只需要将a1循环到z的开方数即可。
  4. 对于ab还要满足互质才有效,如果不互质,那么最大公约数就不是x了,判断互质用辗转相除即可。
  5. 由于ab的值可以互换,因此每组满足条件的互质数,种数都要加2

代码

/**
* 用时:284ms
* @author PengHao
* @version A1.1
* @date 2019年4月17日 上午11:21:53
*/
import java.util.Scanner; public class Main { private Scanner sc;
private int x, y; // 最大公约数和最小公倍数 public Main() {
sc = new Scanner(System.in);
while (sc.hasNext()) {
x = sc.nextInt();
y = sc.nextInt();
System.out.println(count());
}
sc.close();
} /**
* @return 种数
*/
private int count() {
// 最大公约数和最小公倍数相等
if (x == y) {
return 1;
}
// 最小公倍数与最大公约数不是倍数关系
if (0 != y % x) {
return 0;
}
int z = y / x;
int j, num;
num = 0; // 初始0种
// 小于等于开方数即可
for (int i = 1; i * i <= z; i++) {
j = z / i;
// 倍数关系才能计算
if (0 == z % i) {
// 判断i,j是否互质,互质的话加2,a,b可互换
if (coPrime(i, j)) {
num += 2;
}
}
}
return num; // 返回种数
} /**
* 辗转相除法,来自百度百科
*
* @param a 一个数
* @param b 另一个数
* @return true 如果a和b互质
*/
private boolean coPrime(int a, int b) {
while (true) {
a = a % b;
if (0 == a) {
return 1 == b ? true : false;
}
b = b % a;
if (0 == b) {
return 1 == a ? true : false;
}
}
} /**
* @param args
*/
public static void main(String[] args) {
new Main();
}
}

1266: gcd和lcm(Java)的更多相关文章

  1. poj 2429 GCD &amp; LCM Inverse 【java】+【数学】

    GCD & LCM Inverse Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 9928   Accepted:  ...

  2. HDOJ 4497 GCD and LCM

    组合数学 GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) ...

  3. HDU 4497 GCD and LCM (合数分解)

    GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  4. hdu4497 GCD and LCM

    GCD and LCM Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total S ...

  5. HDU 4497 GCD and LCM(数论+容斥原理)

    GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  6. 数论——算数基本定理 - HDU 4497 GCD and LCM

    GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  7. hdu 4497 GCD and LCM (非原创)

    GCD and LCM Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others)Total ...

  8. hdu 4497 GCD and LCM 数学

    GCD and LCM Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4 ...

  9. GCD 与 LCM UVA - 11388

    题目链接: https://cn.vjudge.net/problem/23709/origin 本题其实有坑 数据大小太大, 2的32次方,故而一定是取巧的算法,暴力不可能过的 思路是最大公因数的倍 ...

随机推荐

  1. 2017杭电ACM集训队单人排位赛 - 2 题解

    1001,水题,直接模拟即可.比赛中开局连wa三发,因为把int写成了bool.. 1002,积分题,比赛中找到了下面这个积分公式, 但是并没什么用,,因为带入以后存在误差,估计是展开了以后出现了误差 ...

  2. [提权]Windows COM组件提权漏洞 (CVE-2017-0213)

    0x01 简介 COM组件是微软开发的一种新软件开发技术,在这个COM框架的下,可以开发出多功能的组件,可以根据自己的需求进行定制开发,替换旧的组件,多个功能组件组合到一起,从而形成了一个复杂的定制化 ...

  3. formidable处理提交的表单或图片文件的简单介绍

    一般来说,客户端向服务端提交数据有GET和POST这两种方式,在之前的文章node.js当中的http模块与url模块的简单介绍当中我们可以知道通过req.url与url模块的配合处理可以快速得到客户 ...

  4. Python读写Excel文件和正则表达式

    Python 读写Excel文件 这里使用的是 xlwt 和 xlrd 这两个excel读写库. #_*_ coding:utf-8 _*_ #__author__='观海云不远' #__date__ ...

  5. 走进JavaWeb技术世界9:Java日志系统的诞生与发展

    本文转自[码农翻身] ## 一个著名的日志系统是怎么设计出来的? # 1前言 Java帝国在诞生之初就提供了集合.线程.IO.网络等常用功能,从C和C++领地那里吸引了大量程序员过来加盟,但是却有意无 ...

  6. Factor_Analysis

    Factor_Analysis(因子分析) Factor Analysis 简书:较好理解的解释,其中公式有一定的推导(仅展现关键步骤,细节大多需要自行补充),基本为结论式. 感性层面理解:首先,明确 ...

  7. CV3——学习笔记-实战项目(上):如何搭建和训练一个深度学习网络

    http://www.mooc.ai/course/353/learn?lessonid=2289&groupId=0#lesson/2289 1.AlexNet, VGGNet, Googl ...

  8. 网站url路径优化方法完全讲解 (url优化、基于tp5、API接口开发)

    url优化可是网站开发的必备高阶技能,先看本实例优化前后效果比较: (同为调用前台模块下的index控制器下的index方法) 优化前:www.tp5.com/tp5/public/index.php ...

  9. SurfaceView双缓冲技术引入

    package com.loaderman.customviewdemo; import android.content.Context; import android.graphics.Canvas ...

  10. 27flutter日期 时间组件flutter_cupertino_date_picker的使用

    pubspec.yaml flutter_cupertino_date_picker: ^ DatePicker.dart import 'package:date_format/date_forma ...