CSES - Datatähti 2020 alku - Results
Submission details
Task:Lukuvälit
Sender:aleksih
Submission time:2019-10-02 17:20:04 +0300
Language:Rust
Status:COMPILE ERROR

Compiler report

error: expected one of `.`, `;`, `?`, `}`, or an operator, found `let`
  --> input/code.rs:22:9
   |
20 |         panic!()
   |                 - expected one of `.`, `;`, `?`, `}`, or an operator here
21 | 
22 |         let luku1 = str::from_utf8(&vali_luku1_str).unwrap().trim().parse::<u64>().unwrap();
   |         ^^^ unexpected token

warning: unused import: `std::str`
 --> input/code.rs:2:5
  |
2 | use std::str;
  |     ^^^^^^^^
  |
  = note: #[warn(unused_imports)] on by default

error: aborting due to previous error

Code

use std::io::BufRead;
use std::str;

fn main() {
    let mut valit_lkm_str = String::new();

    std::io::stdin().read_line(&mut valit_lkm_str).unwrap();

    // Korkeintaan 10000 < UINT16_KOKO
    let valit_lkm = valit_lkm_str.trim().parse::<usize>().unwrap();

    let stdin = std::io::stdin();
    let mut stdin_lukko = stdin.lock();

    for _ in 0..valit_lkm {
        let mut vali_luku1_str = std::vec::Vec::new();
        let mut vali_luku2_str = std::vec::Vec::new();
        stdin_lukko.read_until(b' ', &mut vali_luku1_str).unwrap();
        stdin_lukko.read_until(b'\n', &mut vali_luku2_str).unwrap();
        panic!()

        let luku1 = str::from_utf8(&vali_luku1_str).unwrap().trim().parse::<u64>().unwrap();
        let luku2 = str::from_utf8(&vali_luku2_str).unwrap().trim().parse::<u64>().unwrap();

        let mut kelpaa_lkm = 0;
        // Iteroi mukaanlukien luku2
        let mut i = luku1;
        while i <= luku2 {
            let mut kelpaava_luku = i;
            let suurin_num_paikka = (i as f64).log(10_f64).floor() as i64;
            let mut kelpaa = true;
            for num_paikka in 0..suurin_num_paikka + 1 {
                let testi_luku = (10_f64).powi(num_paikka as i32) as u64;
                if kelpaava_luku % (testi_luku * 10) > testi_luku {
                    kelpaa = false;
                    //println!("{} ei kelpaa", kelpaava_luku);
                    i += 10 * testi_luku - (kelpaava_luku % (testi_luku * 10));
                    //i += 1;
                    break;
                }
                
                if kelpaava_luku % (testi_luku * 10) == testi_luku {
                    // kohdassa on 1, joten poistetaan se
                    kelpaava_luku -= testi_luku;
                }
            }
            if kelpaa {
                //println!("{} kelpaa", i);
                kelpaa_lkm += 1;
                i += 1;
            }
        }
        println!("{}", kelpaa_lkm);
    }
}