QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#697792 | #3274. 随机游走 | robinyqc | Compile Error | / | / | C++20 | 1.8kb | 2024-11-01 15:47:34 | 2024-11-01 15:47:34 |
Judging History
This is the latest submission verdict.
- [2024-11-01 15:47:34]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2024-11-01 15:47:34]
- Submitted
answer
struct NumbReader
{
buffer: Vec<String>,
ptr: usize
}
impl NumbReader
{
fn new<R: std::io::Read>(inner: &mut R) -> NumbReader
{
let mut buf = String::new();
inner.read_to_string(&mut buf).unwrap();
NumbReader { buffer: buf.trim().
split_whitespace().map(str::to_string).collect() , ptr: 0}
}
fn next<T: std::str::FromStr>(self: &mut Self)
-> Result<T, <T as std::str::FromStr>::Err>
{
let result = self.buffer[self.ptr].as_str().parse::<T>()?;
self.ptr += 1;
Ok(result)
}
}
fn qpow(mut x: u64, mut y: u64, p: u64) -> u64
{
let mut res = 1u64;
while y > 0 {
if y & 1 == 1 {
res = res * x % p;
}
x = x * x % p;
y >>= 1;
}
return res;
}
fn solve(n: u64, m: u64, p: u64)
{
if n == 1 {
println!("0");
return ;
}
if m < n - 1 {
println!("{}", ((n - m + 1) * qpow(2, m, p) + p - 2) % p);
}
else {
let diff = |x, y| if x < y { x + p - y } else { x - y };
let a1 = (m + 2 - n) / (n - 1);
let m1 = m - a1 - (n - 2) * (a1 + 1);
let p1 = qpow(a1 + 3, m1, p);
let mut res =
diff((a1 + 3) * p1 % p, (a1 + 3) % p) * qpow(a1 + 2, p - 2, p) % p;
let p2 = qpow(a1 + 2, n - m1 - 2, p);
res = (res + p1 * (diff(p2 * (a1 + 2) % p, (a1 + 2) % p) % p
* qpow(a1 + 1, p - 2, p) % p)) % p;
res = (res + p1 * p2 % p * (a1 + 1)) % p;
println!("{}", res);
}
}
fn main()
{
let mut rd = NumbReader::new(&mut std::io::BufReader::new(std::io::stdin()));
let t = rd.next::<u32>().unwrap();
for _ in 0..t {
let n: u64 = rd.next().unwrap();
let m: u64 = rd.next().unwrap();
let p: u64 = rd.next().unwrap();
solve(n, m, p);
}
}
Details
answer.code:67:14: error: too many decimal points in number 67 | for _ in 0..t { | ^~~~ answer.code:3:5: error: ‘buffer’ does not name a type 3 | buffer: Vec<String>, | ^~~~~~ answer.code:7:6: error: expected initializer before ‘NumbReader’ 7 | impl NumbReader | ^~~~~~~~~~ answer.code:26:1: error: ‘fn’ does not name a type 26 | fn qpow(mut x: u64, mut y: u64, p: u64) -> u64 | ^~ answer.code:39:1: error: ‘fn’ does not name a type 39 | fn solve(n: u64, m: u64, p: u64) | ^~ answer.code:63:1: error: ‘fn’ does not name a type 63 | fn main() | ^~