ZOJ 1577 GCD & LCM 数论
来源:互联网 发布:cpu测试软件 linux 编辑:程序博客网 时间:2024/05/22 12:40
Given x and y (2 <= x <= 100,000, 2 <= y <= 1,000,000), you are to count the number of p and q such that:
1) p and q are positive integers;
2) GCD(p, q) = x;
3) LCM(p, q) = y.
Input
x and y, one line for each test.
Output
Number of pairs of p and q.
Sample Input
3 60
Sample Output
4
import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.math.BigInteger;import java.util.HashMap;import java.util.Map;import java.util.StringTokenizer;public class Main { public static void main(String[] args){ new Task().solve() ; }}class Task{InputReader in = new InputReader(System.in) ;PrintWriter out = new PrintWriter(System.out) ;Map<Integer , Integer> gao(int num){Map<Integer , Integer> facs = new HashMap<Integer, Integer>() ;for(int i = 2 ; i*i <= num ; i++){if(num % i == 0){int cnt = 0 ; while(num % i == 0){cnt++ ;num /= i ; }facs.put(i , cnt) ;}}if(num != 1) facs.put(num , 1) ;return facs ;}long sum(Map<Integer , Integer> gcd , Map<Integer , Integer> lcm){long res = 1L ;int vis = 0 ;for(Map.Entry<Integer, Integer> entry : gcd.entrySet()){Integer fac = entry.getKey() ;Integer gcdcnt = entry.getValue() ;Integer lcmcnt = lcm.get(fac) ;if(lcmcnt == null || gcdcnt > lcmcnt) return 0L ;res *= (gcdcnt == lcmcnt) ? 1L : 2L ;vis++ ;}return res * (long)Math.pow(2.0 , lcm.size()-vis) ; }void solve(){while(in.hasNext()){out.println(sum(gao(in.nextInt()), gao(in.nextInt()))) ; //out.flush(); }out.flush(); }}class InputReader { public BufferedReader reader; public StringTokenizer tokenizer; public InputReader(InputStream stream) { reader = new BufferedReader(new InputStreamReader(stream), 32768); tokenizer = new StringTokenizer(""); } private void eat(String s) { tokenizer = new StringTokenizer(s); } public String nextLine() { try { return reader.readLine(); } catch (Exception e) { return null; } } public boolean hasNext() { while (!tokenizer.hasMoreTokens()) { String s = nextLine(); if (s == null) return false; eat(s); } return true; } public String next() { hasNext(); return tokenizer.nextToken(); } public int nextInt() { return Integer.parseInt(next()); } public long nextLong() { return Long.parseLong(next()); } public double nextDouble() { return Double.parseDouble(next()); } public BigInteger nextBigInteger() { return new BigInteger(next()); } }
0 0
- ZOJ 1577 GCD & LCM 数论
- zoj 1577 GCD & LCM
- ZOJ 1577 GCD & LCM
- ZOJ 1577 GCD & LCM
- ZOJ 1577 - GCD & LCM
- ZOJ 1577 GCD & LCM
- zoj 1577 GCD & LCM
- UVA 11388 GCD LCM (数论)
- UVA 11388 - GCD LCM(数论)
- ZOJ.1577 GCD & LCM【水,暴力】 2015/09/22
- zoj 1577 (gcd,lcm)求 所有的对数。
- GCD最大公约数、LCM最小公倍数 数论入门
- [数论]HOJ 2010 GCD & LCM Inverse
- uva 11388 - GCD LCM(数论)
- HDU4497 GCD and LCM 数论 素数分解
- UVa 11388 - GCD LCM (简单数论)
- POJ 2429 - GCD & LCM Inverse(数论)
- 【数论】 HDU 4497 GCD and LCM
- i++和++i的区别,及其线程安全问题
- Java之Java中的变量--书(P23)
- Shell:重复执行一个命令n次
- 选择关系型数据库还是非关系型数据库
- 分层开发 第四章 MD5加密
- ZOJ 1577 GCD & LCM 数论
- Lintcode 用栈实现队列
- wpf 动画 visibility
- 文章标题
- 基础总结知识点-第三章:HTML语言
- Spring MVC框架checkbox标签的使用
- ubuntu下使用蓝牙耳机
- 算法学习系列(贪心算法)—多处最优服务次序问题
- 升级版背包问题