https://atcoder.jp/contests/abc456/tasks/abc456_c
DP的に、前の文字と隣に同じ文字無しに何文字続いているかを記憶していきます。
最後はやっぱり出力のところですね。
D <- 998244353 v <- scan("stdin", character()) S <- v[1] char_to_int <- function(char) { if(char == "a") { return(1) } else if(char == "b") { return(2) } else { return(3) } } chars <- strsplit(S, "")[[1]] i <- 0 n <- 0 s <- 0 for(char in chars) { j <- char_to_int(char) if(i != j) { n <- n + 1 } else { n <- 1 } i <- j s <- (s + n) %% D } cat(sprintf("%d", s), "\n")