您的位置:首页 > 其它

hihocoder-1186-求约数

2016-03-07 18:36 281 查看

1.题目


#1186 : Coordinates

时间限制:10000ms
单点时限:1000ms
内存限制:256MB


描述

Give you two integers P and Q. Let all divisors of P be X-coordinates. Let all divisors of Q be Y-coordinates.
For example, when P=6 and Q=2, we can get the coordinates (1,1) (1,2) (2,1) (2,2) (3,1) (3,2) (6,1) (6,2).
You should print all possible coordinates in the order which is first sorted by X-coordinate when coincides, sorted by Y-coordinate.


输入

One line with two integers P and Q(1 <= P, Q <= 10000).


输出

The output may contains several lines , each line with two integers Xi and Yi,
denoting the coordinates.

样例输入
6 2


样例输出
1 1
1 2
2 1
2 2
3 1
3 2
6 1
6 2


2.分析

水题,求出P的约数列表pList,求Q的约数列表qList,两两搭配即可。

注意约数列表从小到大排列,不能重复。

3.代码

//hihocoder-1186
//calc divisor
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class Main {
static Scanner scanner;
static boolean debug=true;
int P,Q;
List pList=new ArrayList<>();
List qList=new ArrayList<>();

void read(){
P=scanner.nextInt();
Q=scanner.nextInt();
}
void calcDivisor(int x,List list){
int j=0;
for(int i=1;i<=Math.sqrt(x);i++)
if(x%i==0){
list.add(i);
if(i!=(j=x/i))
list.add(j);
}
Collections.sort(list);
}
void calc(){
calcDivisor(P,pList);
calcDivisor(Q,qList);
}
void output(){
for(int p: pList)
for(int q:qList)
System.out.println(p+" "+q);
}

public static void main(String[] args) throws FileNotFoundException {
scanner=new Scanner(System.in);
if(debug)
scanner=new Scanner(new File("d:/in.txt"));
Main obj= new Main();
obj.read();
obj.calc();
obj.output();
}

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: