Codeforces Round #613 (Div. 2) C. Fadi and LCM

C. Fadi and LCM

Today, Osama gave Fadi an integer X, and Fadi was wondering about the minimum possible value of max(a,b) such that LCM(a,b) equals X. Both a and b should be positive integers.

LCM(a,b) is the smallest positive integer that is divisible by both a and b. For example, LCM(6,8)=24, LCM(4,12)=12, LCM(2,3)=6.

Of course, Fadi immediately knew the answer. Can you be just like Fadi and find any such pair?

Input
The first and only line contains an integer X (1≤X≤1012).

Output
Print two positive integers, a and b, such that the value of max(a,b) is minimum possible and LCM(a,b) equals X. If there are several possible such pairs, you can print any.

Examples
inputCopy
2
outputCopy
1 2
inputCopy
6
outputCopy
2 3
inputCopy
4
outputCopy
1 4
inputCopy
1
outputCopy
1 1

题意描述:这道题就是给你一个数X,让你输出两个数,这两个数要满足:1.LCM(m,n)=x 也就是说,这两个数的最小公倍数是X。2.使得max(a,b)的值最小,举个例子,如果X为6的话,那么有两种情况:LCM(1,6)和LCM(2,3),要使得max(a,b)的值最小,所以输出的就是2和3。刚看到题的时候,脑袋很迷糊,在想使得max(a,b)的值最小是什么意思,弄懂了这一点,就很简单了。要想max(a,b)的值最小,那么就从1枚举到sqrt(X),求得最大的因子。

AC代码如下:

import java.util.Scanner;
public class Main {
	private static int[] ans=new int[1000001];
	public static void main(String[] args){
		Scanner cin=new Scanner(System.in);
		long x=cin.nextLong();
		long max=0;
		for(long i=1;i*i<=x;i++) {
			if(lcm(i,x/i)==x&&gcd(i,x/i)==1) {
				max=Math.max(max, i);
			}
		}
		System.out.println(max+" "+x/max);
	}
	public static long gcd(long m,long n) {
		return m%n==0?n:gcd(n,m%n);
	}
	public static long lcm(long m,long n) {
		return m*n/gcd(m,n);
	}
}

原题链接https://codeforces.com/contest/1285/problem/C

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值