| Task: | Pallo |
| Sender: | xnor |
| Submission time: | 2022-01-22 13:17:19 +0200 |
| Language: | Rust |
| Status: | READY |
| Result: | 100 |
| group | verdict | score |
|---|---|---|
| #1 | ACCEPTED | 10 |
| #2 | ACCEPTED | 35 |
| #3 | ACCEPTED | 55 |
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.01 s | 1, 2, 3 | details |
| #2 | ACCEPTED | 0.01 s | 2, 3 | details |
| #3 | ACCEPTED | 0.01 s | 3 | details |
Code
use std::io::{stdin, BufRead, BufReader};
fn main() {
let mut stdin = BufReader::new(stdin());
let mut cur_line = String::new();
stdin.read_line(&mut cur_line).unwrap();
let t: usize = cur_line.trim().parse().unwrap();
for _ in 0..t {
cur_line.clear();
stdin.read_line(&mut cur_line).unwrap();
let nums = cur_line
.split_whitespace()
.map(|s| s.parse::<u64>().unwrap())
.collect::<Vec<_>>();
if let &[n, m, k] = &nums[..] {
let x = k / (n - 1) + k / (m - 1) - k / lcm(n - 1, m - 1);
println!("{}", x);
}
}
}
fn lcm(a: u64, b: u64) -> u64 {
let mut u = a;
let mut v = b;
loop {
u %= v;
if u == 0 {
return (a / v) * b;
}
v %= u;
if v == 0 {
return (a / u) * b;
}
}
}
Test details
Test 1
Group: 1, 2, 3
Verdict: ACCEPTED
| input |
|---|
| 100 10 5 76 9 8 78 8 6 49 3 3 94 ... |
| correct output |
|---|
| 25 19 15 47 8 ... |
| user output |
|---|
| 25 19 15 47 8 ... Truncated |
Test 2
Group: 2, 3
Verdict: ACCEPTED
| input |
|---|
| 1000 7 5 99033171167123849 6 8 472883555390027162 9 10 258937093512465880 10 6 691774305483997493 ... |
| correct output |
|---|
| 33011057055707949 148620545979722822 57541576336103529 199845910473154830 52151060432923288 ... |
| user output |
|---|
| 33011057055707949 148620545979722822 57541576336103529 199845910473154830 5215106043292328 ... Truncated |
Test 3
Group: 3
Verdict: ACCEPTED
| input |
|---|
| 1000 816332614 86098803 33572721929... |
| correct output |
|---|
| 4310587870 45982113074 1550250683 717639357 3282221941 ... |
| user output |
|---|
| 4310587870 45982113074 1550250683 717639357 3282221941 ... Truncated |
