Submission #62985015
Source Code Expand
#![allow(unused)]
fn main() {
let sieve = SieveOfEratosthenes::new(1_000_000);
let inp = readv::<u64>();
let (a, b) = (inp[0], inp[1]);
let g = gcd(a, b);
if g > 1 {
println!("{}", sieve.factorize(g).len() + 1);
} else {
println!("1");
}
}
fn gcd(a: u64, b: u64) -> u64 {
if b == 0 {
a
} else {
gcd(b, a % b)
}
}
struct SieveOfEratosthenes {
primes: Vec<u64>,
}
impl SieveOfEratosthenes {
fn new(v: usize) -> Self {
let mut is_prime = vec![true; v + 1];
let mut primes = vec![];
for i in 2..=v {
if is_prime[i] {
primes.push(i as u64);
for j in ((i * i)..=v).step_by(i) {
is_prime[j] = false;
}
}
}
Self { primes }
}
fn factorize(&self, mut x: u64) -> Vec<(u64, u64)> {
assert!(x > 1);
let mut res = vec![];
for &p in self.primes.iter() {
let mut exp = 0;
while x % p == 0 {
exp += 1;
x = x / p;
}
if exp > 0 {
res.push((p, exp))
}
if p * p > x {
break;
}
}
if x > 1 {
res.push((x, 1));
}
res
}
}
fn read<T: std::str::FromStr>() -> T {
let mut s = String::new();
std::io::stdin().read_line(&mut s).ok();
s.trim().parse().ok().unwrap()
}
fn readv<T: std::str::FromStr>() -> Vec<T> {
read::<String>()
.split_ascii_whitespace()
.map(|t| t.parse().ok().unwrap())
.collect()
}
fn reads() -> Vec<char> {
read::<String>().chars().collect()
}
fn mapv<T, S, F: Fn(&T) -> S>(arr: &Vec<T>, f: F) -> Vec<S> {
arr.iter().map(f).collect()
}
fn join<T: ToString>(arr: &[T], sep: &str) -> String {
arr.iter()
.map(|x| x.to_string())
.collect::<Vec<String>>()
.join(sep)
}
Submission Info
| Submission Time | |
|---|---|
| Task | D - Disjoint Set of Common Divisors |
| User | amoshuangyc |
| Language | Rust (rustc 1.70.0) |
| Score | 400 |
| Code Size | 2073 Byte |
| Status | AC |
| Exec Time | 6 ms |
| Memory | 3612 KiB |
Judge Result
| Set Name | All | Sample | ||||
|---|---|---|---|---|---|---|
| Score / Max Score | 400 / 400 | 0 / 0 | ||||
| Status |
|
|
| Set Name | Test Cases |
|---|---|
| All | sample_01, sample_02, sample_03, testcase_01, testcase_02, testcase_03, testcase_04, testcase_05, testcase_06, testcase_07, testcase_08, testcase_09, testcase_10, testcase_11, testcase_12, testcase_13, testcase_14, testcase_15, testcase_16, testcase_17, testcase_18, testcase_19, testcase_20, testcase_21, testcase_22, testcase_23 |
| Sample | sample_01, sample_02, sample_03 |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| sample_01 | AC | 5 ms | 3448 KiB |
| sample_02 | AC | 5 ms | 3520 KiB |
| sample_03 | AC | 5 ms | 3504 KiB |
| testcase_01 | AC | 5 ms | 3508 KiB |
| testcase_02 | AC | 6 ms | 3532 KiB |
| testcase_03 | AC | 6 ms | 3604 KiB |
| testcase_04 | AC | 5 ms | 3384 KiB |
| testcase_05 | AC | 5 ms | 3604 KiB |
| testcase_06 | AC | 5 ms | 3612 KiB |
| testcase_07 | AC | 5 ms | 3472 KiB |
| testcase_08 | AC | 6 ms | 3528 KiB |
| testcase_09 | AC | 5 ms | 3576 KiB |
| testcase_10 | AC | 5 ms | 3484 KiB |
| testcase_11 | AC | 5 ms | 3512 KiB |
| testcase_12 | AC | 5 ms | 3540 KiB |
| testcase_13 | AC | 6 ms | 3520 KiB |
| testcase_14 | AC | 5 ms | 3484 KiB |
| testcase_15 | AC | 5 ms | 3552 KiB |
| testcase_16 | AC | 5 ms | 3584 KiB |
| testcase_17 | AC | 5 ms | 3564 KiB |
| testcase_18 | AC | 5 ms | 3520 KiB |
| testcase_19 | AC | 5 ms | 3512 KiB |
| testcase_20 | AC | 5 ms | 3396 KiB |
| testcase_21 | AC | 5 ms | 3604 KiB |
| testcase_22 | AC | 6 ms | 3516 KiB |
| testcase_23 | AC | 6 ms | 3572 KiB |