1 条题解
-
0
📝 题目大意
给定 周共 天的每日步数 ,按周分组(每 天一组),输出每周的总步数,空格分隔。
💡 解题思路
-
题目分析:
- ,数据规模极小,直接模拟即可。
- 每周恰好 天,总共 个输入,按顺序每 个一组求和。
-
算法推导:
- 读入 后,将 个步数存入数组
a[](下标从 开始)。 - 维护两个指针
x和y,x指向当前周的起始下标,y指向当前周的结束下标,初始x=1, y=7。 - 对于第 周():
- 遍历
a[x]到a[y]求和,存入临时变量m。 - 输出
m并加空格。 x和y各向后移动 位(x += 7, y += 7),进入下一周。
- 遍历
- 读入 后,将 个步数存入数组
-
边界与细节:
- 可能为 ,求和时不会出错,无需特殊处理。
- 每周固定 天,不存在不足 天的情况( 天恰好整除)。
- 输出格式要求空格分隔,末尾多余空格通常也能通过,但标准代码在最后一个数后也有空格,本题评测机对此宽容。
⏱️ 复杂度分析
- 时间复杂度:,遍历所有 个元素求和。
- 空间复杂度:,存储所有步数;也可优化为 边读边算,但 很小,无必要。
💻 标准代码 (C++)
#include<bits/stdc++.h> using namespace std; int main(){ int n; long a[100005]; // 存储每日步数,下标从 1 开始 cin >> n; int x = 1, y = 7; // x: 当前周起始下标, y: 当前周结束下标 for(int i = 1; i <= n * 7; i++) cin >> a[i]; // 读入所有步数 for(int i = 1; i <= n; i++){ int m = 0; // 本周步数总和 for(int j = x; j <= y; j++) m += a[j]; // 累加一周 7 天 x = x + 7; // 窗口右移 7 天 y = y + 7; cout << m << ' '; // 输出本周总和 } return 0; } -
- 1
信息
- ID
- 722
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- (无)
- 递交数
- 1
- 已通过
- 1
- 上传者