use std::sync::atomic::*;
pub fn r0_99() -> u8 {
static COUNT: AtomicI32 = AtomicI32::new(-1);
let str = "008577095774393111917928597195874433131938338637275934493171978958777335994573311999778817396014613372111011188374360746334722310313887751613467349227107179077576174793532291091991176161948735923311323919769631491367239127299297736414993732411313193778764350337925113737941797647509383257139419478096535213892631494395381165952339726915147967821661541401271157539718236735474092771635997782767755741928116761983829683563421283173679918396915694312931797199785370157143330718173";
if COUNT.load(Ordering::SeqCst) == -1 {
let now = std::time::SystemTime::now();
let duration = now.duration_since(std::time::UNIX_EPOCH).unwrap();
let seed = duration.as_secs() as u32;
COUNT.store(seed as i32 % str.len() as i32 - 1, Ordering::SeqCst);
}
let r = &str[COUNT.load(Ordering::SeqCst) as usize .. COUNT.load(Ordering::SeqCst) as usize + 2];
COUNT.fetch_add(1, Ordering::SeqCst);
if COUNT.load(Ordering::SeqCst) > str.len() as i32 - 1 {
COUNT.store(0, Ordering::SeqCst);
}
r.parse::<u8>().unwrap()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn t1() {
for _ in 0..100 {
let result = r0_99();
assert!(result <= 99);
}
}
}