偶数求和
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 104320 Accepted Submission(s): 43393
Problem Description
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
Input
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。
Output
对于每组输入数据,输出一个平均值序列,每组输出占一行。
Sample Input
3 24 2
Sample Output
3 63 7
虽然是水题,但是一直PE还是很难受Q-Q。。。下面贴代码,时间复杂度和空间复杂度都尽量做到了最小化,没有开辟额外的数组,只用了一次循环,里面嵌套了多个if控制情况和格式,时间复杂度为O(n)。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
while(sc.hasNext())
{
int n = sc.nextInt();
int m = sc.nextInt();
int count = 0;
int sum = 0;
int value = 0;
for(int i = 1;i <= n;i++)
{
value += 2;
sum += value;
count++;
if(count == m)
{
if(n % m == 0 && i == n)
{
System.out.print(sum/m);
break;
}
System.out.print(sum/m+" ");
sum = 0;
count = 0;
}
if(n%m != 0 && i == n)
{
System.out.print(sum/count);
}
}
System.out.println();
}
}
}