| Task: | Kertoma | 
| Sender: | ToVoid | 
| Submission time: | 2022-11-06 22:55:12 +0200 | 
| Language: | Rust | 
| Status: | READY | 
| Result: | 0 | 
| group | verdict | score | 
|---|---|---|
| #1 | TIME LIMIT EXCEEDED | 0 | 
| #2 | TIME LIMIT EXCEEDED | 0 | 
| #3 | TIME LIMIT EXCEEDED | 0 | 
| test | verdict | time | group | |
|---|---|---|---|---|
| #1 | ACCEPTED | 0.00 s | 1, 2, 3 | details | 
| #2 | ACCEPTED | 0.00 s | 1, 2, 3 | details | 
| #3 | ACCEPTED | 0.00 s | 1, 2, 3 | details | 
| #4 | ACCEPTED | 0.00 s | 1, 2, 3 | details | 
| #5 | TIME LIMIT EXCEEDED | -- | 1, 2, 3 | details | 
| #6 | TIME LIMIT EXCEEDED | -- | 1, 2, 3 | details | 
| #7 | TIME LIMIT EXCEEDED | -- | 2, 3 | details | 
| #8 | TIME LIMIT EXCEEDED | -- | 2, 3 | details | 
| #9 | TIME LIMIT EXCEEDED | -- | 2, 3 | details | 
| #10 | TIME LIMIT EXCEEDED | -- | 2, 3 | details | 
| #11 | TIME LIMIT EXCEEDED | -- | 3 | details | 
| #12 | TIME LIMIT EXCEEDED | -- | 3 | details | 
| #13 | TIME LIMIT EXCEEDED | -- | 3 | details | 
| #14 | TIME LIMIT EXCEEDED | -- | 3 | details | 
| #15 | TIME LIMIT EXCEEDED | -- | 3 | details | 
| #16 | TIME LIMIT EXCEEDED | -- | 3 | details | 
Code
use std::io::{BufRead, BufReader};
fn equals(nums: &[u32;10], has_nums: &Vec<u32>) -> bool {
    for i in 0..10 {
        if nums[i] != has_nums[i] {
            return false;
        }
    }
    true
}
const M: u32 = 1000000000;
const L: u32 = 9;
fn multiply(num: u32, x: &mut Vec<u32>) {
    *x = x.iter().map(|a| *a*num).collect::<Vec<_>>();
    for i in 0..(x.len() - 1) {
        x[i+1] += x[i]/M;
        x[i] = x[i]%M;
    }
    let mut last_i = x.len()-1;
    while x[last_i] >= M {
        x.push(x[last_i]/M);
        x[last_i] = x[last_i]%M;
        last_i += 1;
    }
}
fn update_nums(nums: &mut [u32;10], x: &Vec<u32>) {
    let mut pienempi;
    let mut isompi;
    for a in x {
        for i in 0..L {
            pienempi = 10_u32.pow(i);
            isompi = pienempi * 10;
            nums[(a%isompi/pienempi) as usize] += 1;
        }
    }
    nums[0] -= {
        let mut r = 0;
        for i in (0..L).rev() {
            pienempi = 10_u32.pow(i);
            isompi = pienempi * 10;
            if (x[x.len()-1]%isompi/pienempi) == 0 {
                r += 1;
            } else {
                break;
            }
        }
        r
    };
}
fn main() {
    let mut input = BufReader::new(std::io::stdin());
    let mut line = "".to_string();
    input.read_line(&mut line).unwrap();
    let split = line.split_whitespace();
    let has_nums: Vec<u32> = split.map(|s| s.parse().unwrap()).collect::<Vec<_>>();
    let mut x: Vec<u32> = vec![1];
    let mut nums: [u32; 10];
    let mut a: u32 = 0;
    for i in 2.. {
        multiply(i, &mut x);
        nums = [0; 10];
        update_nums(&mut nums, &x);
        if equals(&nums, &has_nums) {
            a = i;
            break;
        }
    }
    println!("{}",a);
}Test details
Test 1
Group: 1, 2, 3
Verdict: ACCEPTED
| input | 
|---|
| 0 0 1 0 0 0 0 0 0 0 | 
| correct output | 
|---|
| 2 | 
| user output | 
|---|
| 2 | 
Test 2
Group: 1, 2, 3
Verdict: ACCEPTED
| input | 
|---|
| 0 0 0 0 0 0 1 0 0 0 | 
| correct output | 
|---|
| 3 | 
| user output | 
|---|
| 3 | 
Test 3
Group: 1, 2, 3
Verdict: ACCEPTED
| input | 
|---|
| 0 0 1 0 1 0 0 0 0 0 | 
| correct output | 
|---|
| 4 | 
| user output | 
|---|
| 4 | 
Test 4
Group: 1, 2, 3
Verdict: ACCEPTED
| input | 
|---|
| 2 0 1 1 0 0 1 0 2 0 | 
| correct output | 
|---|
| 10 | 
| user output | 
|---|
| 10 | 
Test 5
Group: 1, 2, 3
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 9 3 1 1 2 2 3 1 6 1 | 
| correct output | 
|---|
| 27 | 
| user output | 
|---|
| (empty) | 
Test 6
Group: 1, 2, 3
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 10 4 3 4 3 2 2 4 3 7 | 
| correct output | 
|---|
| 36 | 
| user output | 
|---|
| (empty) | 
Test 7
Group: 2, 3
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 71 53 36 30 25 29 42 24 34 29 | 
| correct output | 
|---|
| 199 | 
| user output | 
|---|
| (empty) | 
Test 8
Group: 2, 3
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 71 33 46 38 27 45 36 21 35 35 | 
| correct output | 
|---|
| 205 | 
| user output | 
|---|
| (empty) | 
Test 9
Group: 2, 3
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 93 38 35 26 43 54 38 25 41 34 | 
| correct output | 
|---|
| 222 | 
| user output | 
|---|
| (empty) | 
Test 10
Group: 2, 3
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 100 33 33 45 36 43 38 54 56 36 | 
| correct output | 
|---|
| 242 | 
| user output | 
|---|
| (empty) | 
Test 11
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 3419 1797 1845 1849 1879 1791 ... | 
| correct output | 
|---|
| 5959 | 
| user output | 
|---|
| (empty) | 
Test 12
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 4776 2695 2709 2781 2616 2753 ... | 
| correct output | 
|---|
| 8391 | 
| user output | 
|---|
| (empty) | 
Test 13
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 20097 12282 12229 12214 12406 ... | 
| correct output | 
|---|
| 32001 | 
| user output | 
|---|
| (empty) | 
Test 14
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 47934 29918 29878 29713 29984 ... | 
| correct output | 
|---|
| 71718 | 
| user output | 
|---|
| (empty) | 
Test 15
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 84691 54156 54277 54533 54296 ... | 
| correct output | 
|---|
| 123123 | 
| user output | 
|---|
| (empty) | 
Test 16
Group: 3
Verdict: TIME LIMIT EXCEEDED
| input | 
|---|
| 99098 63339 63878 64182 63904 ... | 
| correct output | 
|---|
| 142663 | 
| user output | 
|---|
| (empty) | 
