結果
| 問題 |
No.1063 ルートの計算 / Sqrt Calculation
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2020-05-29 21:23:14 |
| 言語 | Java (openjdk 23) |
| 結果 |
AC
|
| 実行時間 | 58 ms / 2,000 ms |
| コード長 | 5,087 bytes |
| コンパイル時間 | 2,578 ms |
| コンパイル使用メモリ | 80,120 KB |
| 実行使用メモリ | 50,540 KB |
| 最終ジャッジ日時 | 2024-11-06 02:16:04 |
| 合計ジャッジ時間 | 4,209 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 14 |
ソースコード
import java.io.OutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;
import java.util.HashMap;
import java.io.InputStreamReader;
import java.io.BufferedOutputStream;
import java.io.UncheckedIOException;
import java.nio.charset.Charset;
import java.util.StringTokenizer;
import java.util.Map;
import java.util.Map.Entry;
import java.io.Writer;
import java.io.OutputStreamWriter;
import java.io.BufferedReader;
import java.io.InputStream;
/**
* Built using CHelper plug-in
* Actual solution is at the top
*
* @author mikit
*/
public class Main {
public static void main(String[] args) {
InputStream inputStream = System.in;
OutputStream outputStream = System.out;
LightScanner in = new LightScanner(inputStream);
LightWriter out = new LightWriter(outputStream);
YC1063 solver = new YC1063();
solver.solve(1, in, out);
out.close();
}
static class YC1063 {
public void solve(int testNumber, LightScanner in, LightWriter out) {
long n = in.longs(), a1 = 1, a2 = 1;
Map<Long, Integer> map = IntMath.primeFactorize(n);
for (Map.Entry<Long, Integer> entry : map.entrySet()) {
if (entry.getValue() % 2 == 1) a1 *= entry.getKey();
for (int i = 0; i < entry.getValue() / 2; i++) a2 *= entry.getKey();
}
out.ans(a2).ans(a1).ln();
}
}
static final class IntMath {
private IntMath() {
}
public static Map<Long, Integer> primeFactorize(long p) {
Map<Long, Integer> factor = new HashMap<>();
if ((p & 1) == 0) {
int c = 0;
do {
c++;
p >>= 1;
} while ((p & 1) == 0);
factor.put(2L, c);
}
for (long i = 3; i * i <= p; i += 2) {
if (p % i == 0) {
int c = 0;
do {
c++;
p /= i;
} while ((p % i) == 0);
factor.put(i, c);
}
}
if (p > 1) {
factor.put(p, 1);
}
return factor;
}
}
static interface Verified {
}
static class LightWriter implements AutoCloseable {
private final Writer out;
private boolean autoflush = false;
private boolean breaked = true;
public LightWriter(Writer out) {
this.out = out;
}
public LightWriter(OutputStream out) {
this(new OutputStreamWriter(new BufferedOutputStream(out), Charset.defaultCharset()));
}
public LightWriter print(char c) {
try {
out.write(c);
breaked = false;
} catch (IOException ex) {
throw new UncheckedIOException(ex);
}
return this;
}
public LightWriter print(String s) {
try {
out.write(s, 0, s.length());
breaked = false;
} catch (IOException ex) {
throw new UncheckedIOException(ex);
}
return this;
}
public LightWriter ans(String s) {
if (!breaked) {
print(' ');
}
return print(s);
}
public LightWriter ans(long l) {
return ans(Long.toString(l));
}
public LightWriter ln() {
print(System.lineSeparator());
breaked = true;
if (autoflush) {
try {
out.flush();
} catch (IOException ex) {
throw new UncheckedIOException(ex);
}
}
return this;
}
public void close() {
try {
out.close();
} catch (IOException ex) {
throw new UncheckedIOException(ex);
}
}
}
static class LightScanner implements AutoCloseable {
private BufferedReader reader = null;
private StringTokenizer tokenizer = null;
public LightScanner(InputStream in) {
reader = new BufferedReader(new InputStreamReader(in));
}
public String string() {
if (tokenizer == null || !tokenizer.hasMoreTokens()) {
try {
tokenizer = new StringTokenizer(reader.readLine());
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
return tokenizer.nextToken();
}
public long longs() {
return Long.parseLong(string());
}
public void close() {
try {
this.reader.close();
} catch (IOException ex) {
throw new UncheckedIOException(ex);
}
}
}
}