20250223-Rain
1. 运算符
/*
1. 设计一个程序, 输入三位数a, 分别输出百,十,个位.
(0<a<1000)
*/
#include <iostream>
#include <cmath>
using namespace std;
int main(void)
{
int a; // a 储存一个三位数
int num[3]; // num[] 分百 十 个位 存储三位数
cout << "Please input 'a' (0 < a < 1000): ";
cin >> a;
if (a <= 0 || a >= 1000)
{
// 如若不符合题目范围:报错、退出程序
cout << "Error! 'a' must be (0 < a < 1000)" << endl;
return 0;
}
for (int i = 0; i < 3; i++)
{
num[i] = a / int(pow(10, (2 - i))); // 用 / 整除运算 分别取出百、十、个位:
a = a % int(pow(10, (2 - i))); // 用 % 取余运算 分别去除百、十、个位:
}
// 输出结果
for (int i = 0; i < 3; i++)
{
cout << num[i] << endl;
}
return 0;
}
2. 判断
/*
2. 打分系统
在某次考试时, 学生的提交成绩惨不忍睹
云海学长为了让大家及格可谓煞费苦心, 他苦思三天三夜, 终于想出了一套打分方案:
正确数量在0~10时, 每题6分
正确数量在11~20时, 第11~20题, 每题2分
正确数量在21~40时, 第21~40题, 每题1分
但因为需要计分的作业太多了, 希望你能帮帮云海学长, 实现该计分程序.
输入做对的题目数量n, 输出得分.
(0<=n<=40)
*/
#include <iostream>
using namespace std;
int main(void)
{
int n; // n 存储题目数量
int score = 0; // score 存储总得分
cout << "Please input 'n' (0 <= n <= 40): ";
cin >> n;
if (n < 0 || n > 40)
{
// 如若不符合题目范围:报错、退出程序
cout << "Error! 'n' must be (0 <= n <= 40)" << endl;
return 0;
}
// 判断条件并进行运算,这里可以去除左边界,不影响判断。
if (n >= 0 && n <= 10)
{
score = 6 * n;
}
else if (n >= 11 && n <= 20)
{
score = 6 * 10 + (n - 10) * 2;
}
else if (n >= 21 && n <= 40)
{
score = 6 * 10 + 10 * 2 + (n - 20) * 1;
}
// cout << "Number of correct: "<< n << '\n' << "The score you got: " << score;
cout << "The score you got: " << score;
return 0;
}
3. 简单循环
简单的动态规划,草稿演算不难推出状态转移公式:fib(n) = fib(n-1) + fib(n-2)
。
依题意编码即可
时间复杂度为
O(n)
空间复杂度却决于对于状态的保存用数组(
O(n)
)还是普通变量(O(1)
)推荐一道同类题 LeetCode 70. - 简单
/*
3. 斐波那契数列: super家养了一对刚出生的兔子, 兔子出生第3月开始每月都会生一对小兔子, 小兔子出
生后同样第3月开始也会每月生一对兔子
super想知道 如果兔子不死 n月后家里会有多少对兔子
设计一个程序: 输入n, 输出兔子数量
(2<n<30)
*/
#include <iostream>
using namespace std;
int main(void)
{
int n;
cout << "Please input 'n' (2 < n < 30): ";
cin >> n;
if (n <= 2 || n >= 30)
{
// 如若不符合题目范围:报错、退出程序
cout << "Error! 'n' must be (2 < n < 30)" << endl;
return 0;
}
// 只需要保存前两个状态量,而不是数组
// 这样可以把空间复杂度降为O(1)
int pre0 = 1;
int pre1 = 1;
int cur = pre0 + pre1;
for (int i = 3; i <= n; i++)
{
cur = pre0 + pre1;
pre0 = pre1;
pre1 = cur;
}
cout << "The number of rabbits: " << cur << endl;
return 0;
}
Last updated