1. #include<iostream>
  2. #include<vector>
  3. using namespace std;
  4. //printvector for test
  5. void printvector(vector<int> &v) {
  6. for(vector<int>::iterator it=v.begin(); it!=v.end(); it++) {
  7. cout<<*it<<" ";
  8. }
  9. cout<<endl;
  10. }
  11. int main() {
  12. vector<int> v; //记得每组结束后最后清零
  13. vector<int> aver; //用于存放每m个元素的平均值
  14. int n,m;
  15. while(cin>>n>>m) {
  16. for(int i=0; i<n; i++) {
  17. v.push_back(2*i+2);
  18. }
  19. int size=v.size();
  20. // printvector(v);
  21. int sum=0;
  22. //测试好像偶数组没问题,奇数组后来也写好了
  23. if(size%m==0)
  24. for(int i=1; i<=(size/m); i++) {
  25. for(int j=i*m-1; j>=(i-1)*m; j--) {
  26. sum+=v[j];
  27. }
  28. aver.push_back(sum/m);
  29. sum=0;
  30. }
  31. else {
  32. int group=n/m; //共有group组可以直接用偶数组做
  33. int odd=n%m; //最后一组不够m个的数的个数
  34. for(int i=1; i<=group; i++) {
  35. for(int j=i*m-1; j>=(i-1)*m; j--) {
  36. sum+=v[j];
  37. }
  38. aver.push_back(sum/m);
  39. sum=0;
  40. }
  41. //偶数部分1的组的平均值加入后,开始将最后的几个剩的数的平均值加入
  42. for(int j=0; j<odd; j++) {
  43. sum+=v[j+group*m];
  44. }
  45. aver.push_back(sum/odd);
  46. sum=0;
  47. }
  48. printvector(aver);
  49. v.clear();
  50. aver.clear();
  51. }
  52. return 0;
  53. }
点赞(0)
 

9.9 分

1 人评分

 

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论