洛谷题单-入门1-顺序结构-rust

 注意: 这是用单元测试管理的

/// --Hello,World!--
/// 输出语句,没有什么好说的
#[test]
pub fn one_1(){
    println!("Hello,World!");
}
/// --输出字符菱形--
/// 从零开始并且长度向下取整,所以一定是一半
/// 上半部分正常计算,下半部分反向计算
#[test]
pub fn one_2(){
    let n = 5; // 菱形的对角线长度
    let mid = n / 2; // 中间行的索引
    // 输出上半部分(包括中间行)
    for i in 0..=mid {
        let spaces = mid - i; // 空格数
        let stars = 2 * i + 1; // 星号数
        // 打印空格和星号
        println!("{}{}", " ".repeat(spaces), "*".repeat(stars));
    }
    // 输出下半部分
    for i in (0..mid).rev() {
        let spaces = mid - i;
        let stars = 2 * i + 1;
        // 打印空格和星号
        println!("{}{}", " ".repeat(spaces), "*".repeat(stars));
    }
}
/// --超级玛丽游戏--
/// 字符串字面值,可以识别换行符
#[test]
pub fn one_3(){
    let str  =
"                ********
               ************
               ####....#.
             #..###.....##....
             ###.......######              ###            ###
                ...........               #...#          #...#
               ##*#######                 #.#.#          #.#.#
            ####*******######             #.#.#          #.#.#
           ...#***.****.*###....          #...#          #...#
           ....**********##.....           ###            ###
           ....****    *****....
             ####        ####
           ######        ######
##############################################################
#...#......#.##...#......#.##...#......#.##------------------#
###########################################------------------#
#..#....#....##..#....#....##..#....#....#####################
##########################################    #----------#
#.....#......##.....#......##.....#......#    #----------#
##########################################    #----------#
#.#..#....#..##.#..#....#..##.#..#....#..#    #----------#
##########################################    ############";
    println!("{}",str);
}
/// --A+B Problem--
/// 空格分割,闭包迭代
#[test]
pub fn one_4(){

    // let mut input = String::new();
    // std::io::stdin().read_line(&mut input).expect("读取输入失败");
    // let mut nums = input.trim().split_whitespace().map(|x| x.parse::<i32>().unwrap());
    //
    // let a = nums.next().unwrap();
    // let b = nums.next().unwrap();

    // 命令行替换
    let a = 3;
    let b = 4;

    println!("{}", a+b);
}
/// --字符三角形--
/// 读取一个字符,然后输出三角形
#[test]
pub fn one_5(){
    // let mut input = String::new();
    // std::io::stdin().read_line(&mut input).unwrap();
    // let ch = input.trim().chars().next().unwrap();

    // 代替命令行
    let ch = '#';

    for i in 1..=3 {
        let spaces = 3 - i;
        let chars = 2 * i - 1;
        println!("{}{}", " ".repeat(spaces), ch.to_string().repeat(chars));
    }
}
/// --苹果问题--
/// 读取两个数字,然后输出乘积
#[test]
pub fn one_6(){
        // let mut input = String::new();
        // std::io::stdin().read_line(&mut input).expect("读取输入失败");
        // let nums: Vec<i32> = input.trim().split_whitespace()
        //                           .map(|x| x.parse().expect("解析失败"))
        //                           .collect();
        // 命令行替换
        let nums = vec![3, 4];
        let a = nums[0];
        let b = nums[1];

        println!("{}", a * b);
}
/// --字母转换--
/// 读取一个字符串,然后转换为大写字母
#[test]
pub fn one_7(){
    // let mut input = String::new();
    // std::io::stdin().read_line(&mut input).expect("读取输入失败");

    // 命令行替换
    let input = "abc".to_string();
    println!("{}", input.trim().to_uppercase());
}
/// --数字反转--
/// 句号分割,然后反转输出
#[test]
pub fn one_8(){
    // let mut input = String::new();
    // std::io::stdin().read_line(&mut input).expect("读取输入失败");
    // let parts: Vec<_> = input.trim().split('.').collect();

    // 命令行替换
    let parts = vec!["123", "4"];

    let float = parts[0].chars().rev().collect::<String>();
    println!("{}.{}", parts[1], float);
}
/// --再分肥宅水--
/// 两数相除
#[test]
pub fn one_9(){
        // let mut input = String::new();
        // std::io::stdin().read_line(&mut input).expect("Failed to read line");
        // let parts: Vec<f64> =
        //     input.trim()
        //          .split_whitespace()
        //          .collect()
        //          .into_iter()
        //          .map(|x| x.parse().expect("解析失败"))
        //          .collect();

        // 代替命令行
        let parts = vec![500.0, 3_f64];

        // 计算每名同学可以获得的饮料量
        let drink_per_person = parts[0] / parts[1];

        // 计算需要的杯子总数
        let total_cups = (parts[1] * 2.0) as i32;

        // 输出结果
        println!("{:.3}\n{}", drink_per_person, total_cups);
}
/// --三角形面积--
/// 按公式
#[test]
pub fn one_10(){
    // let mut input = String::new();
    // std::io::stdin().read_line(&mut input).expect("Failed to read line");
    //
    // let nums: Vec<f64> =
    //     input
    //         .split_whitespace()
    //         .map(|s| s.parse().unwrap())
    //         .collect();

    // 代替命令行
    let nums = vec![3_f64, 4_f64, 5_f64];

    let (a, b, c) = (nums[0], nums[1], nums[2]);
    let p = (a + b + c) / 2.0;
    let area = (p * (p - a) * (p - b) * (p - c)).sqrt();

    println!("{:.1}", area);
}
/// --上学迟到--
/// 考虑是不是当天和就大不就小
#[test]
pub fn one_11(){
    // 代替命令行
    let number_list: Vec<i32> = vec![100, 99];

    // let mut input = String::new();
    // std::io::stdin().read_line(&mut input).expect("Failed to read line");
    // let number_list: Vec<i32> = input.trim().split_whitespace()
    //     .map(|s| s.parse().expect("parse error"))
    //     .collect();

    let mut need_minute = if number_list[0] % number_list[1] == 0 {
        number_list[0] / number_list[1]
    } else {
        number_list[0] / number_list[1] + 1
    };
    need_minute += 10;

    if need_minute > 480 {
        need_minute -= 480;

        let real_list = if need_minute % 60 == 0 {
            vec![need_minute / 60, 0]
        } else {
            vec![need_minute / 60 + 1, need_minute % 60]
        };

        if real_list[1] == 0 {
            println!("{:02}:{:02}", 23 - real_list[0] + 1, 0);
        } else {
            println!("{:02}:{:02}", 23 - real_list[0] + 1, 59 - real_list[1] + 1);
        }
    } else {
        let real_list = if need_minute % 60 == 0 {
            vec![need_minute / 60, 0]
        } else {
            vec![need_minute / 60 + 1, need_minute % 60]
        };

        if real_list[1] == 0 {
            println!("{:02}:{:02}", 7 - real_list[0] + 1, 0);
        } else {
            println!("{:02}:{:02}", 7 - real_list[0] + 1, 59 - real_list[1] + 1);
        }
    }
}
/// --大象喝水--
/// 公式
#[test]
pub fn one_12(){
    // 代替命令行
    let nums:Vec<i32> = vec![23, 11];

    // let mut input = String::new();
    // std::io::stdin().read_line(&mut input).expect("Failed to read line");
    //
    // let nums: Vec<i32> = input.trim().split_whitespace()
    //     .map(|s| s.parse().expect("Parse error"))
    //     .collect();

    let h = nums[0];
    let r = nums[1];

    // 计算每桶水的体积,单位是立方厘米
    let pi = 3.14;
    let volume_per_bucket = pi * (r as f64).powi(2) * h as f64;

    // 计算需要的桶数
    let total_volume_needed = 20000.0; // 20升 = 20000立方厘米
    let buckets_needed = (total_volume_needed / volume_per_bucket).ceil() as i32;

    // 输出结果
    println!("{}", buckets_needed);
}
/// P1425 小鱼的游泳时间
/// 正常的时间计算
#[test]
pub fn one_13(){
    // 代替命令行
    let parts = vec![12, 50, 19, 10];
    // let mut input = String::new();
    // std::io::stdin().read_line(&mut input).expect("Failed to read line");
    // let parts: Vec<i32> = input
    //     .split_whitespace()
    //     .map(|s| s.parse().unwrap())
    //     .collect();

    let number_start_h = parts[0];
    let number_start_m = parts[1];
    let number_final_h = parts[2];
    let number_final_m = parts[3];

    let number_subtractive_h = if number_final_m >= number_start_m {
        number_final_h - number_start_h
    } else {
        number_final_h - number_start_h - 1
    };

    let number_subtractive_m = if number_final_m >= number_start_m {
        number_final_m - number_start_m
    } else {
        number_final_m + 60 - number_start_m
    };

    println!("{} {}", number_subtractive_h, number_subtractive_m);
}
/// P1421 小玉买文具
/// 就小不就大
#[test]
pub fn one_14(){
    // 代替命令行
    let values = vec![10, 3];
    // // 读取输入
    // let mut input = String::new();
    // std::io::stdin().read_line(&mut input).expect("Failed to read line");
    //
    // // 分割并解析输入值
    // let values: Vec<i32> = input
    //     .split_whitespace()
    //     .map(|s| s.parse().unwrap())
    //     .collect();

    let number_yuan = values[0];
    let number_jiao = values[1];

    // 计算总金额(单位:角)
    let number_total = number_yuan * 10 + number_jiao;

    // 计算可购买数量
    let number_target_price = 19;
    let number_buy = number_total / number_target_price;

    println!("{}", number_buy);
}
/// P3954 [NOIP 2017 普及组] 成绩
/// 公式
#[test]
pub fn one_15(){
    // 代替命令行
    let numbers = vec![100, 100, 80];
    // 读取输入
    // let mut input = String::new();
    // std::io::stdin().read_line(&mut input).expect("读取输入失败");
    //
    // // 分割并解析输入值
    // let numbers: Vec<i32> = input
    //     .split_whitespace()
    //     .map(|s| s.parse().expect("请输入有效的整数"))
    //     .collect();


    // 计算加权和(使用显式截断转换)
    let result =
        (numbers[0] as f32 * 0.2) as i32
        + (numbers[1] as f32 * 0.3) as i32
        + (numbers[2] as f32 * 0.5) as i32;

    println!("{}", result);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值