HDU 2015 (水)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2015

题目大意:给你个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,让你按顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值

解题思路:

 记录 n = 100 的数列的 100 个 前 n(n为1 ~ 100) 项和,一个长度为 n 的 “滑动窗口”, 从头滑动到尾,过程中每次停滞都做一次除以 n 的操作并输出,注意格式,最后判断有没有剩下的了,有就输出来

PS:感觉自己代码写的好丑,思路好挫,因为既然是偶数应该有办法不去计算,直接输出某个数,或者某两个数的平均数,先上AC代码吧,其他的学会了一会来更新

代码:

 1 #include<iostream>
 2 #include<cmath>
 3 #include<iomanip>
 4 #include<algorithm>
 5 using namespace std;
 6 int num;
 7 int s[105];
 8 int main()
 9 {
10     for(int i = 1; i <= 100; i ++)
11         s[i] = s[i - 1] + 2 * i;
12     int m, n;
13     while(cin >> m >> n)
14     {
15         for(int i = 1; i <= m / n; i ++)
16         {
17             if(i == 1)
18                 cout << (s[n * i] - s[n * i - n]) / n;
19             else
20                 cout << " " << (s[n * i] - s[n * i - n]) / n;
21         }
22 
23         if(m % n != 0)
24             cout << " " << (s[m] - s[m / n * n]) / (m - m / n * n);
25         cout << endl;
26     }
27 }
28 
29 //2 4 6 8 10//更好的办法

 

猜你喜欢

转载自www.cnblogs.com/mimangdewo-a1/p/9374839.html