log 2021-07-10
sport
codeforces 730 div 2 리뷰 (나머지 문제) - 2
해설보고 구현하니 바로 됨. 원리는 간단한 아이디어였다..
rust solution
원래 답이 x일 때, x^0^(0^1)^(1^2)…((x-1)^x) 이런 식으로 계산시키면 답을 맞추게 된다. https://codeforces.com/contest/1543/status
rust라서 cpp과 속도가 비슷할 줄 알았는데, cpp은 1초대인 반면 실행 시간이 3초대로 나와서 뭔가 아쉽다. 많이 느린 부분이 있나? 주워온 unsafe scanner를 사용해도 마찬가지였다.
...
fn from_base_vector(vector: &Vec<i32>, base: i32) -> i32 {
let mut result = 0;
for (i, item) in vector.iter().enumerate() {
result = result + item * base.pow(i as u32);
}
result
}
fn to_base_vector(original: i32, base:i32) -> Vec<i32> {
let mut vec = vec![];
let mut ori = original;
if ori == 0 {
vec.push(0);
return vec;
}
while ori > 0 {
vec.push(ori % base);
ori = ori / base;
}
return vec;
}
enum VectorOp {
Add,
Sub
}
fn vector_op(op: VectorOp, a: Vec<i32>, b: Vec<i32>, modv: i32) -> Vec<i32> {
match op {
VectorOp::Add => {
return vector_xor(&a, &b, modv);
},
VectorOp::Sub => {
return vector_sub_xor(&a, &b, modv);
}
}
}
fn vector_xor(a: &Vec<i32>, b: &Vec<i32>, modv: i32) -> Vec<i32> {
let mut result = vec![];
let alen = a.len();
let blen = b.len();
let len = std::cmp::max(alen, blen);
for i in 0..len {
let aval = if i < alen { a[i] } else { 0 };
let bval = if i < blen { b[i] } else { 0 };
result.push((aval + bval) % modv);
}
result
}
fn vector_sub_xor(a: &Vec<i32>, b: &Vec<i32>, modv: i32) -> Vec<i32> {
let mut result = vec![];
let alen = a.len();
let blen = b.len();
let len = std::cmp::max(alen, blen);
for i in 0..len {
let aval = if i < alen { a[i] } else { 0 };
let bval = if i < blen { b[i] } else { 0 };
// dbg2!(aval, bval, modv);
result.push((aval - bval + modv) % modv);
}
result
}
fn solve<R: io::BufRead, W: io::Write>(scan: &mut UnsafeScanner<R>, out: &mut W) {
let cases = ri32(scan);
let mut vects = vec![vec![0];200005];
for _case in 0..cases {
let (n,k) = (rusize(scan), ri32(scan));
let modv = k;
let mut query = to_base_vector(0, modv);
// let mut vects = vec![];
for i in 0..n+2 {
vects[i] = to_base_vector(i as i32, modv);
}
for i in 0..n {
writeln!(out, "{}", from_base_vector(&query, modv));
out.flush();
if ri32(scan) == 1 {
break;
}
// let im1 = to_base_vector(i-1, modv);
// let im2 = to_base_vector(i-2, modv);
let im1 = &vects[i+1];
let im2 = &vects[i];
query = if i % 2 == 0 {
vector_sub_xor(&im2, &im1, modv)
} else {
vector_sub_xor(&im1, &im2, modv)
};
}
}
}
...
jetson nano 셋업
내부에서는 연결이 되는데 왜 외부에서는 안되나 씨름했는데, 외부 포워딩이 안되있었다. 외부 주소로도 내부 관리페이지로 바로 접속되다보니 까먹었다.
팬 설치했는데, Pwm target은 직접 줘야 하는 상태이다. 온도 기반 스크립트 적용할 예정.
몰랐는데 젯슨나노는 와이파이 모듈이 내장되어있지 않아서 랜선으로 연결해주어야 했다.
Comments