杭电ACM2015 偶数求和
Problem Description
有一个长度为n(n<=100)的数列,该数列定义为从2开始的递增有序偶数,现在要求你按照顺序每m个数求出一个平均值,如果最后不足m个,则以实际数量求平均值。编程输出该平均值序列。
Input
输入数据有多组,每组占一行,包含两个正整数n和m,n和m的含义如上所述。
Output
对于每组输入数据,输出一个平均值序列,每组输出占一行。
Sample Input
3 2 4 2
Sample Output
3 6 3 7
解法一(这种方法会比较好理解一些):
import java.util.Scanner;
class Main{
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
int arr[]=new int[100];
arr[0]=2;
for (int i=1;i<arr.length;i++){
arr[i]=arr[i-1]+2;
}
while (input.hasNext()){
int n=input.nextInt();
int m=input.nextInt();
int c=0,ave=0;
int t=0;
if (n%m!=0){
t=n%m;
}
int space=0;
for (int i=0;i<n-t;i++){
ave+=arr[i];
c++;
if (c==m){
if (space++>0){
System.out.print(" ");
}
System.out.print(ave/m);
c=0;
ave=0;
}
}
if (t!=0){
for (int i=0;i<t;i++){
ave+=arr[n-t+i];
}
System.out.print(" "+ave/t);
}
System.out.println();
}
}
}
import java.util.*;
class Main
{
public static void main(String args[]){
Scanner input=new Scanner(System.in);
while (input.hasNext())
{
int n=input.nextInt();
int m=input.nextInt();
int ave=0;
int i=0;
while (n>m)
{
ave=(m+1)+2*m*i;
n-=m;
i++;
System.out.print(ave+" ");
}
ave=(1+n)+2*m*i;
System.out.println(ave);
}
}
}