use std::collections::HashMap;
macro_rules! input {
(from $iter:expr, $($r:tt)*) => {
input_inner!{$iter, $($r)*}
};
(source = $s:expr, $($r:tt)*) => {
let mut iter = $s.split_whitespace();
input_inner!{iter, $($r)*}
};
($($r:tt)*) => {
let s = {
use std::io::Read;
let mut s = String::new();
std::io::stdin().read_to_string(&mut s).unwrap();
s
};
let mut iter = s.split_whitespace();
input_inner!{iter, $($r)*}
};
}
macro_rules! input_inner {
($iter:expr) => {};
($iter:expr, ) => {};
($iter:expr, $var:ident : $t:tt $($r:tt)*) => {
let $var = read_value!($iter, $t);
input_inner!{$iter $($r)*}
};
}
macro_rules! read_value {
($iter:expr, ( $($t:tt),* )) => {
( $(read_value!($iter, $t)),* )
};
($iter:expr, [ $t:tt ; $len:expr ]) => {
(0..$len).map(|_| read_value!($iter, $t)).collect::<Vec<_>>()
};
($iter:expr, chars) => {
read_value!($iter, String).chars().collect::<Vec<char>>()
};
($iter:expr, usize1) => {
read_value!($iter, usize) - 1
};
($iter:expr, $t:ty) => {
$iter.next().unwrap().parse::<$t>().expect("Parse error")
};
}
fn solve(n: usize, k: usize, hardcodes: &HashMap<(usize, usize), &str>) -> String {
if k < 4 {
if let Some(result) = hardcodes.get(&(n, k)) {
return result.to_string();
} else {
return "NIE".to_string();
}
}
(["A".repeat(k), "PAPPAA".repeat(n / 5)].join(""))[..n].to_string()
}
fn main() {
let s = {
use std::io::Read;
let mut s = String::new();
std::io::stdin().read_to_string(&mut s).unwrap();
s
};
let mut iter = s.split_whitespace();
let hardcodes = HashMap::from([
((0, 0), ""),
((1, 1), "P"),
((2, 2), "PP"),
((2, 1), "PA"),
((3, 3), "PPP"),
((3, 2), "PPA"),
((4, 4), "PPPP"),
((4, 3), "PPPA"),
((4, 2), "PPAA"),
((5, 5), "PPPPP"),
((5, 4), "PPPPA"),
((5, 3), "PPPAP"),
((6, 6), "PPPPPP"),
((6, 5), "PPPPPA"),
((6, 4), "PPPPAP"),
((6, 3), "PPPAPA"),
((7, 7), "PPPPPPP"),
((7, 6), "PPPPPPA"),
((7, 5), "PPPPPAP"),
((7, 4), "PPPPAPA"),
((7, 3), "PPPAPAA"),
((8, 8), "PPPPPPPP"),
((8, 7), "PPPPPPPA"),
((8, 6), "PPPPPPAP"),
((8, 5), "PPPPPAPP"),
((8, 4), "PPPPAPAA"),
((8, 3), "PPPAPAAA"),
]);
input! {
from iter,
t: usize,
}
for _ in 0..t {
input! {
from iter,
n: usize,
k: usize,
}
println!("{}", solve(n, k, &hardcodes));
}
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 | use std::collections::HashMap; macro_rules! input { (from $iter:expr, $($r:tt)*) => { input_inner!{$iter, $($r)*} }; (source = $s:expr, $($r:tt)*) => { let mut iter = $s.split_whitespace(); input_inner!{iter, $($r)*} }; ($($r:tt)*) => { let s = { use std::io::Read; let mut s = String::new(); std::io::stdin().read_to_string(&mut s).unwrap(); s }; let mut iter = s.split_whitespace(); input_inner!{iter, $($r)*} }; } macro_rules! input_inner { ($iter:expr) => {}; ($iter:expr, ) => {}; ($iter:expr, $var:ident : $t:tt $($r:tt)*) => { let $var = read_value!($iter, $t); input_inner!{$iter $($r)*} }; } macro_rules! read_value { ($iter:expr, ( $($t:tt),* )) => { ( $(read_value!($iter, $t)),* ) }; ($iter:expr, [ $t:tt ; $len:expr ]) => { (0..$len).map(|_| read_value!($iter, $t)).collect::<Vec<_>>() }; ($iter:expr, chars) => { read_value!($iter, String).chars().collect::<Vec<char>>() }; ($iter:expr, usize1) => { read_value!($iter, usize) - 1 }; ($iter:expr, $t:ty) => { $iter.next().unwrap().parse::<$t>().expect("Parse error") }; } fn solve(n: usize, k: usize, hardcodes: &HashMap<(usize, usize), &str>) -> String { if k < 4 { if let Some(result) = hardcodes.get(&(n, k)) { return result.to_string(); } else { return "NIE".to_string(); } } (["A".repeat(k), "PAPPAA".repeat(n / 5)].join(""))[..n].to_string() } fn main() { let s = { use std::io::Read; let mut s = String::new(); std::io::stdin().read_to_string(&mut s).unwrap(); s }; let mut iter = s.split_whitespace(); let hardcodes = HashMap::from([ ((0, 0), ""), ((1, 1), "P"), ((2, 2), "PP"), ((2, 1), "PA"), ((3, 3), "PPP"), ((3, 2), "PPA"), ((4, 4), "PPPP"), ((4, 3), "PPPA"), ((4, 2), "PPAA"), ((5, 5), "PPPPP"), ((5, 4), "PPPPA"), ((5, 3), "PPPAP"), ((6, 6), "PPPPPP"), ((6, 5), "PPPPPA"), ((6, 4), "PPPPAP"), ((6, 3), "PPPAPA"), ((7, 7), "PPPPPPP"), ((7, 6), "PPPPPPA"), ((7, 5), "PPPPPAP"), ((7, 4), "PPPPAPA"), ((7, 3), "PPPAPAA"), ((8, 8), "PPPPPPPP"), ((8, 7), "PPPPPPPA"), ((8, 6), "PPPPPPAP"), ((8, 5), "PPPPPAPP"), ((8, 4), "PPPPAPAA"), ((8, 3), "PPPAPAAA"), ]); input! { from iter, t: usize, } for _ in 0..t { input! { from iter, n: usize, k: usize, } println!("{}", solve(n, k, &hardcodes)); } } |
English