注意: 这是用单元测试管理的
/// P2433 【深基1-2】小学数学 N 合一
/// 超级大坑,C++估计是默认六位有效数字,输出格式必须得按照C++的来,但是题目里又不跟你说
#[test]
pub fn two_1(){
// 代替命令行
let input_string = "8".to_string();
// 1 声明变量 并获取一行输入
// let mut input_string = String::new();
// std::io::stdin().read_line(&mut input_string).unwrap();
match input_string.as_str().trim() {
"1" => println!("I love Luogu!"),
"2" => println!("{} {}", 6, 4),
"3" => println!("{}\n{}\n{}\n", 3, 12, 2),
"4" => println!("{:.3}", 500.0 / 3.0),
"5" => println!("{}", 15),
"6" => println!("{:.4}", ((6_i32.pow(2) + 9_i32.pow(2)) as f64).powf(0.5)), // powi powf sqrt
"7" => println!("{}\n{}\n{}", 110, 90, 0),
"8" => {
let (pi, r) = (3.141593, 5);
let r = r as f64;
println!("{:.4}\n{:.4}\n{:.3}\n", 2.0 * pi * r, pi * r * r , 4.0 / 3.0 * pi * r * r * r)
}
"9" => println!("{}", 22),
"10" => println!("{}", 9),
"11" => println!("{:.4}", 100.0 / 3.0),
"12" => println!("{}\n{}", 13, 'R'),
"13" => println!("{}", 16),
"14" => println!("{}", 50),
_ => {}
}
}
/// P5709 【深基2.习6】Apples Prologue / 苹果和虫子
/// 就大不就小 判断0的情况 和避免掉负数的情况
#[test]
pub fn two_2(){
// 代替命令行输入
let input_string = "50 10 200".to_string();
// 1 声明变量 并获取一行输入
// let mut input_string = String::new();
// std::io::stdin().read_line(&mut input_string).unwrap();
// 2 空格分割后迭代成 vec
let number_list: Vec<i32> =
input_string
.trim()
.split_whitespace()
.map(|s| s.parse().unwrap())
.collect();
// 3 获取变量
let (m, n, t) = (number_list[0], number_list[1], number_list[2]);
// 4 判断 n 是不是为0 判断 苹果有没有被吃完 苹果吃完个数就大不就小
if n != 0 {
let eat_apple = if t % n == 0 { t / n } else { t / n + 1 };
let result = if m - eat_apple >= 0 {m - eat_apple} else { 0 };
println!("{result}");
} else {
println!("0");
}
}
/// P5710 【深基3.例2】数的性质
/// 只需要看前两个,就可以推断出后两个
#[test]
pub fn two_3(){
// 代替命令行
// let input_string:i32 = "12".to_string().parse().unwrap();
// 1 声明变量并获取命令行
let mut input_string = String::new();
std::io::stdin().read_line(&mut input_string).unwrap();
let input_string:i32 = input_string.trim().parse().unwrap();
let (is_1, is_2) = (
input_string % 2 == 0,
input_string > 4 && input_string <= 12
);
let (a_think, b_think) = (
if is_1 && is_2 { 1 } else { 0 },
if is_1 || is_2 { 1 } else { 0 }
);
let (c_think, d_think) = (
if !(a_think == 1) && b_think == 1 { 1 } else { 0 },// !要打括号!!!
if !(b_think == 1) { 1 } else { 0 }
);
println!("{} {} {} {}", a_think, b_think, c_think, d_think);
}
/// P5711 【深基3.例3】闰年判断
/// 公式
#[test]
pub fn two_4(){
// 代替命令行
// let input_string:i32 = "1926".to_string().parse().unwrap();
// 1 声明变量并获取命令行
let mut input_string = String::new();
std::io::stdin().read_line(&mut input_string).unwrap();
let input_string:i32 = input_string.trim().parse().unwrap();
let result =
if (input_string % 100 == 0 && input_string % 400 == 0)
||
(input_string % 4 == 0 && input_string % 100 != 0)
{ 1 } else { 0 };
println!("{}", result);
}
/// P5712 【深基3.例4】Apples
/// 分支判断
#[test]
pub fn two_5(){
// 代替命令行
// let input_string:i32 = "3".to_string().parse().unwrap();
let mut input_string = String::new();
std::io::stdin().read_line(&mut input_string).unwrap();
let eat_apple:i32 = input_string.trim().parse().unwrap();
match eat_apple {
0..=1 => {
println!("Today, I ate {} apple.", eat_apple)
}
_ => {
println!("Today, I ate {} apples.", eat_apple)
}
}
}
/// P5713 【深基3.例5】洛谷团队系统
/// 分支判断
#[test]
pub fn two_6(){
// 代替命令行
// let input_string:i32 = "50".to_string().parse().unwrap();
let mut input_string = String::new();
std::io::stdin().read_line(&mut input_string).unwrap();
let number:i32 = input_string.trim().parse().unwrap();
let result = if number < 6 { "Local" } else { "Luogu" };
println!("{}", result);
}
/// P5714 【深基3.例7】肥胖问题
/// 分支判断
#[test]
pub fn two_7(){
enum Status{
Underweight,
Normal,
Overweight
}
pub struct Body {
weight:f64,
height:f64,
pub bmi:f64
}impl Body{
fn new(weight:f64, height:f64) -> Body{
Body{
weight,
height,
bmi: 0_f64,
}
}
fn status(&mut self)-> Status {
self.bmi = self.weight / self.height.powi(2);
if self.bmi < 18.5 {
Status::Underweight
} else if self.bmi >= 24.0 {
Status::Overweight
} else {
Status::Normal
}
}
}
// 命令行代替
let nums = vec![70_f64 ,1.72];
// let mut input_string = String::new();
// std::io::stdin().read_line(&mut input_string).unwrap();
//
// let nums:Vec<f64> = input_string.split_whitespace().map(|x| x.parse().unwrap()).collect();
let mut body = Body::new(nums[0], nums[1]);
match body.status() {
Status::Normal => {
println!("Normal")
}
Status::Underweight => {
println!("Underweight")
}
Status::Overweight => {
println!("{:.4}\nOverweight", body.bmi)
}
}
}
/// P5715 【深基3.例8】三位数排序
/// 内置就行
#[test]
pub fn two_8(){
// 命令行替代
let mut nums = vec![1, 14, 5];
// let mut input_string = String::new();
// std::io::stdin().read_line(&mut input_string).unwrap();
// let mut nums:Vec<i32> = input_string.split_whitespace().map(|x| x.parse().unwrap()).collect();
nums.sort();
for i in nums {
print!("{} ", i);
}
}
/// P5716 【深基3.例9】月份天数
/// 2月判断闰年 其他只需要判断大小月
#[test]
pub fn two_9(){
struct Date {
year: i32,
mouth: i32,
is_leap: bool,
day: i32
}
impl Date {
fn new(year:i32, mouth:i32) -> Date{
Date {
year,
mouth,
is_leap: false,
day: 0
}
}
fn set_is_leap(&mut self){
self.is_leap =
if (self.year % 100 == 0 && self.year % 400 == 0)
|| (self.year % 4 == 0 && self.year % 100 != 0) { true } else { false };
}
fn set_day(&mut self){
match self.mouth {
2 => {
match self.is_leap {
true => self.day = 29,
false => self.day = 28
}
}
1 | 3 | 5 | 7 | 8 | 10 | 12 => self.day = 31,
_ => self.day = 30,
}
}
}
// 命令行替代
let nums = vec![1926, 8];
// let mut input_string = String::new();
// std::io::stdin().read_line(&mut input_string).unwrap();
// let nums:Vec<i32> = input_string.split_whitespace().map(|x| x.parse().unwrap()).collect();
let mut date = Date::new(nums[0], nums[1]);
date.set_is_leap();
date.set_day();
println!("{}", date.day);
}
/// P1085 [NOIP 2004 普及组] 不高兴的津津
/// 二维数组 超过8 才会不高兴
#[test]
pub fn two_10(){
// 数据较多无命令行替代
let mut week_act:Vec<Vec<i32>> = vec![];
for _ in 1..=7 {
let mut input_string = String::new();
std::io::stdin().read_line(&mut input_string).unwrap();
week_act.push(input_string.split_whitespace().map(|x| x.parse::<i32>().unwrap()).collect());
}
let mut week_add = vec![];
for i in week_act.iter() {
let count = i[0] + i[1];
week_add.push(if count >= 8 { count - 8 } else { 0 })
}
let mut max = 0;
let mut max_index = 0;
for (index, &item) in week_add.iter().enumerate() {
if max >= item {
continue
} else {
max = item;
max_index = index + 1;
}
}
println!("{}", max_index)
}
158

被折叠的 条评论
为什么被折叠?



