use std::io;
fn main() {
let mut s: String = String::new();
io::stdin().read_line(&mut s).unwrap();
let a: Vec<char> = s.trim().chars().collect();
s.clear();
io::stdin().read_line(&mut s).unwrap();
let b: Vec<char> = s.trim().chars().collect();
s.clear();
io::stdin().read_line(&mut s).unwrap();
let c: Vec<char> = s.trim().chars().collect();
let n: usize = a.len();
let mut dp1: Vec<i64> = vec![0; n];
let mut dp2: Vec<i64> = vec![0; n];
let mut s1: u32 = a[0].to_digit(10).unwrap() + b[0].to_digit(10).unwrap();
let mut s2: u32 = c[0].to_digit(10).unwrap();
let mut ans: i64 = 0;
if s1 == s2 {
ans = ans + 1;
dp1[0] = 1;
}
if s1 + 1 == s2 {
dp2[0] = 1;
}
for i in 1..n {
s1 = a[i].to_digit(10).unwrap() + b[i].to_digit(10).unwrap();
s2 = c[i].to_digit(10).unwrap();
if s1 == s2 {
dp1[i] = dp1[i - 1] + 1;
dp2[i] = 0;
} else if s1 == s2 + 10 {
dp1[i] = dp2[i - 1];
dp2[i] = 0;
}
s1 = s1 + 1;
if s1 == s2 {
dp1[i] = 0;
dp2[i] = dp1[i - 1] + 1;
} else if s1 == s2 + 10 {
dp1[i] = 0;
dp2[i] = dp2[i - 1];
}
ans = ans + dp1[i];
}
println!("{}", ans);
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | use std::io; fn main() { let mut s: String = String::new(); io::stdin().read_line(&mut s).unwrap(); let a: Vec<char> = s.trim().chars().collect(); s.clear(); io::stdin().read_line(&mut s).unwrap(); let b: Vec<char> = s.trim().chars().collect(); s.clear(); io::stdin().read_line(&mut s).unwrap(); let c: Vec<char> = s.trim().chars().collect(); let n: usize = a.len(); let mut dp1: Vec<i64> = vec![0; n]; let mut dp2: Vec<i64> = vec![0; n]; let mut s1: u32 = a[0].to_digit(10).unwrap() + b[0].to_digit(10).unwrap(); let mut s2: u32 = c[0].to_digit(10).unwrap(); let mut ans: i64 = 0; if s1 == s2 { ans = ans + 1; dp1[0] = 1; } if s1 + 1 == s2 { dp2[0] = 1; } for i in 1..n { s1 = a[i].to_digit(10).unwrap() + b[i].to_digit(10).unwrap(); s2 = c[i].to_digit(10).unwrap(); if s1 == s2 { dp1[i] = dp1[i - 1] + 1; dp2[i] = 0; } else if s1 == s2 + 10 { dp1[i] = dp2[i - 1]; dp2[i] = 0; } s1 = s1 + 1; if s1 == s2 { dp1[i] = 0; dp2[i] = dp1[i - 1] + 1; } else if s1 == s2 + 10 { dp1[i] = 0; dp2[i] = dp2[i - 1]; } ans = ans + dp1[i]; } println!("{}", ans); } |
English