[HDOJ]2015

来源:互联网 发布:大数据与市场营销 编辑:程序博客网 时间:2024/05/01 19:16
Problem Description
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
 

Input
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。
 

Output
对于每组输入数据,输出一个平均值序列,每组输出占一行。
 

Sample Input
3 24 2
 

Sample Output
3 63 7


1.思路:

声明一个数组元素为n的动态数组,将每m项分别赋予另外一个数组.

2.注意事项:

    (1)求和次数time的确定;

    (2)求平均数时数字的个数count的确定;

    (3)输出格式的确定


#include<iostream>using namespace std;int main(){        int *p,n,m,a[100],sum=0,count=0,i;        while(cin>>n>>m){                p=new int [n];                for(i=0;i<n;i++){                        p[i]=(i+1)*2;                }                int time;                if(n%m!=0)      time=n/m+1;     //一开始我用if(double(n)/m!=0)来判断求和的次数,但是这种判断是不准确的.                else    time=n/m;                for(int j=0;j<time;j++){                        i=m*j;                        for(;i<m+m*j&&i<n;i++){         //循环m次,防止越界引入i<n的判断                                sum+=p[i];      count++;        //这里引入count来计算求和的次数,最终求平均数之用。                        }                        a[j]=sum/count; sum=0;  count=0;                }                //注意输出格式                for(int k=0;k<time;k++){                        if(k==0)        cout<<a[k];     //第一次不输出前导空格                        else    cout<<" "<<a[k];        //除第一次外输出前导空格                }                cout<<endl;                delete [] p;        }        return 0;}

0 0