2001.计算两点之间的距离
题目描述
Problem Description:输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。
Input:输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。
Output:对于每组输入数据,输出一行,结果保留两位小数。
Sample Input
0 0 0 1
0 1 1 0
Sample Output
1.00
1.41
运行代码
#include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { double x1, y1, x2, y2; while (cin >> x1 >> y1 >> x2 >> y2) { double d = sqrt(pow(x2 - x1, 2) + pow(y2 - y1, 2)); cout << fixed << setprecision(2) << d << endl; } return 0; }
代码思路
数学公式的计算
2002.计算球的体积
题目描述
运行代码
#include <iostream> #include <iomanip> #include<cmath> using namespace std; const double PI = 3.1415927; int main() { double r; while (cin >> r) { double V = (4.0 / 3.0) * PI * pow(r, 3); cout << fixed << setprecision(3) <<V << endl; } return 0; }
代码思路
球的体积公式V = (4/3) * π * r^3
2041.超级楼梯
题目描述
运行代码
#include <iostream> #include <vector> using namespace std; int Stairs(int M) { if (M==1||M== 2) return 1; vector<int> dp(M + 1); dp[1] = 1; dp[2] = 1; for (int i = 3; i <= M; i++) { dp[i] = dp[i - 1] + dp[i - 2]; } return dp[M]; } int main() { int N; cin >> N; while (N--) { int M; cin >> M; cout << Stairs(M) << endl; } return 0; }
代码思路
动态规划(Dynamic Programming, DP)的方法来解决经典的“爬楼梯问题”。解题思路如下:
- 问题定义:给定一个楼梯有M级台阶,每次可以跨1级或2级,求到达第M级台阶的所有不同走法。
- 边界条件处理:当M等于1时,只有1种走法,即直接走1级。当M等于2时,有两种走法,分别是走两次1级或直接走1次2级。
- 状态定义与转移方程:定义状态:
dp[i]
表示到达第i
级台阶的不同走法数量。状态转移方程:到达第i
级台阶的走法可以通过从第i-1
级台阶走1步到达,也可以通过从第i-2
级台阶走2步到达,因此dp[i] = dp[i-1] + dp[i-2]
。 - 初始化:由于
dp[1]
和dp[2]
是基础情况,它们都初始化为1。 - 计算过程:通过一个循环,从3开始迭代到M,依次计算出
dp[i]
的值,直到求得dp[M]
。 - 输出结果:对于每一个测试实例,程序读入M值后,调用
Stairs(M)
函数计算并输出走法数量。
2042.不容易系列之二
题目描述
运行代码
#include <iostream> using namespace std; int main() { int N; cin >> N; while (N--) { int a; cin >> a; int s = 3; for (int i = 0; i < a; ++i) { s= (s- 1) * 2; } cout << s << endl; } return 0; }
代码思路
通过逆向思维来解决,即从市场返回到起点,反向考虑每次经过收费站时羊的数量变化。每次经过收费站,实际上羊的数量会变为原来的两倍再加一(因为退还了一只羊)。因此,我们可以从最后剩余的羊的数量开始,反向计算原始的羊的数量。
首先读取测试实例的个数N,然后对于每个实例,读取经过的收费站数量a,并从终点的3只羊开始,反向通过每个收费站计算原始的羊的数量。每次反向“通过”收费站时,都将当前的羊的数量减一后乘以2,这是因为原本的计算逻辑是在过站时先减半再加一,逆向时则需要做对应的逆运算。最终,它输出每个实例中老汉最初拥有的羊的数量。