hdu 2015 偶数求和【JAVA】

偶数求和

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();
        }
        
    }

}


猜你喜欢

转载自blog.csdn.net/qq_34229351/article/details/80033588