测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A17038. 长征里程计算

填空题 中等

题目描述

长征里程计算

题目描述

红军从江西瑞金出发,开始了举世闻名的两万五千里长征。出发之初,部队还需要适应高强度行军,第一天只行进了 x 公里;随着将士们体能的锻炼和路线的熟悉,之后每一天都比前一天多行进 y 公里。

请你帮助史料研究员计算两个数据:

1. 第 n 天这一天,红军行军的里程数;

2. 前 n 天累计的总行军里程。

由于真实行军数据精确到小数(如 30.5 公里),本题中 x、y 均为实数(可能含小数)。

输入格式

一行三个数 x y n,用空格分隔,分别表示第一天行军里程、每天增加的里程、第几天。x、y 为实数,n 为整数。

输出格式

一行两个数,用一个空格分隔:

1. 第 n 天的行军里程;

2. 前 n 天累计的总行军里程。

两个数都必须保留 2 位小数。

补充校验样例

无本题官方样例,以下样例用于自测。

5 2.5 3

50 99.00

参考答案

#include <bits/stdc++.h> using namespace std; int main() { int n; double x, y; cin >> x >> y >> n; // an 表示第 n 天的行军里程 double an = x + (n - 1) * y; // sn 表示前 n 天的累计行军里程 double sn = n * (x + an) / 2.0; // 题目要求两个结果都保留 2 位小数 cout << fixed << setprecision(2); cout << an << " " << sn; return 0; }

答案解析

每天的里程构成等差数列:

1. 第 1 天为 x;

2. 公差为 y;

3. 第 n 天为 x + (n - 1) * y;

4. 前 n 天总和为 n * (x + 第 n 天 ) / 2。

上一题 下一题