結果

問題 No.1097 Remainder Operation
ユーザー phspls
提出日時 2020-07-05 00:11:49
言語 Rust
(1.83.0 + proconio)
結果
AC  
実行時間 143 ms / 2,000 ms
コード長 1,940 bytes
コンパイル時間 23,579 ms
コンパイル使用メモリ 378,684 KB
実行使用メモリ 6,944 KB
最終ジャッジ日時 2024-09-19 16:55:48
合計ジャッジ時間 16,225 ms
ジャッジサーバーID
(参考情報)
judge1 / judge3
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2
other AC * 21
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

fn main() {
let mut n = String::new();
std::io::stdin().read_line(&mut n).ok();
let n: usize = n.trim().parse().unwrap();
let mut a = String::new();
std::io::stdin().read_line(&mut a).ok();
let a: Vec<usize> = a.trim().split_whitespace().map(|s| s.parse().unwrap()).collect();
let mut q = String::new();
std::io::stdin().read_line(&mut q).ok();
let q: usize = q.trim().parse().unwrap();
let mut x: usize = 0;
let mut uses: Vec<usize> = vec![0];
let mut used: Vec<usize> = vec![0; n];
let mut count: usize = 1;
used[0] = count;
while used[(x + a[x % n]) % n] == 0 {
x += a[x % n];
count += 1;
let val = x % n;
used[val] = count;
uses.push(val);
}
let geta_count = used[(x + a[x % n]) % n] - 1;
let mut geta: Vec<usize> = if geta_count > 0 { vec![0; geta_count] } else { vec![] };
let mut loopsum: Vec<usize> = vec![0; count - geta_count];
for i in 0..geta_count {
if i > 0 {
geta[i] = geta[i-1] + a[uses[i]];
} else {
geta[i] = a[uses[0]];
}
}
for i in geta_count..count {
if i > geta_count {
loopsum[i-geta_count] = loopsum[i-geta_count-1] + a[uses[i]];
} else {
loopsum[i-geta_count] = a[uses[i]];
}
}
for _ in 0..q {
let mut k = String::new();
std::io::stdin().read_line(&mut k).ok();
let k: usize = k.trim().parse().unwrap();
let mut result = 0usize;
if geta_count > 0 {
result = if k > geta_count { geta[geta_count-1] } else { geta[k-1]};
}
if k > geta_count {
result += (k - geta_count) / loopsum.len() * loopsum[loopsum.len()-1];
if (k - geta_count) % loopsum.len() > 0 {
result += loopsum[(k - geta_count) % loopsum.len() - 1];
}
}
println!("{}", result);
}
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0