题目

时间限制
100 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:
A1 = 能被5整除的数字中所有偶数的和;
A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4…;
A3 = 被5除后余2的数字的个数;
A4 = 被5除后余3的数字的平均数,精确到小数点后1位;
A5 = 被5除后余4的数字中最大数字。
输入格式:
每个输入包含1个测试用例。每个测试用例先给出一个不超过1000的正整数N,随后给出N个不超过1000的待分类的正整数。数字间以空格分隔。
输出格式:
对给定的N个正整数,按题目要求计算A1~A5并在一行中顺序输出。数字间以空格分隔,但行末不得有多余空格。
若其中某一类数字不存在,则在相应位置输出“N”。
输入样例1:

13 1 2 3 4 5 6 7 8 9 10 20 16 18

输出样例1:

30 11 2 9.7 9

输入样例2:

8 1 2 4 5 6 7 9 16

输出样例2:

N 11 2 N 9

分析:

每种类型分别判别就行,注意细节,比如:
1.计算A2时候的符号问题,
2.计算A4时候的平均数问题,
3.比如如何判别是否存在A2类型的数
对于问题1,可以设置一个初始为1每次进入A2类型数判断就变号的变量
对于问题2,可以设置一个计数器
对于问题3,可以设置一个flag,进入了A2类型数判断就置1

代码(cpp)

#include<iostream>
using namespace std;
int main(){
    int n;
    double a1,a2,a3,a4,a5;
    int fh=1;
    int num=0;
    int flag=0;
    a1=a2=a3=a4=a5=0;
    cin>>n;
    for(int i=0;i<n;i++){
        int t;
        cin>>t;
        if(t%5==0 && t%2==0)
            a1 += t;
        else if(t%5==1){
            flag=1;
            a2 += t*fh;
            fh = -fh;
        }
        else if(t%5==2)
            a3++;
        else if(t%5==3){
            num++;
            a4 += t;
        }
        else if(t%5==4){
            if(a5 < t)
                a5 =t;
        }
    }
    a4 /=num;
    if(a1!=0)
        cout<<a1;
    else
        cout<<"N";
    cout<<" ";
    if(flag)
        cout<<a2;
    else 
        cout<<"N";
    cout<<" ";
    if(a3!=0)
        cout<<a3;
    else
        cout<<"N";
    cout<<" ";
    if(num!=0)
        printf("%.1lf",a4);
    else
        cout<<"N";
    cout<<" ";
    if(a5!=0)
        cout<<a5;
    else
        cout<<"N";
    return 0;
}

代码(Java)

package b1012;
import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        double a1,a2,a3,a4,a5;
        int fh=1;
        int num=0;
        boolean flag=false;
        a1=a2=a3=a4=a5=0;
        for(int i=0;i<n;i++){
            int t = in.nextInt();
            if(t%5==0 && t%2==0)
                a1 += t;
            else if(t%5==1){
                flag=true;
                a2 += t*fh;
                fh = -fh;
            }
            else if(t%5==2)
                a3++;
            else if(t%5==3){
                num++;
                a4 += t;
            }
            else if(t%5==4){
                if(a5 < t)
                    a5 =t;
            }
        }
        a4 /=num;
        if(a1!=0)
            System.out.printf("%.0f ",a1);
        else
            System.out.print("N ");
        if(flag)
            System.out.printf("%.0f ",a2);
        else 
            System.out.print("N ");
        if(a3!=0)
            System.out.printf("%.0f ",a3);
        else
            System.out.print("N ");
        if(num!=0)
            System.out.printf("%.1f ",a4);
        else
            System.out.print("N ");
        if(a5!=0)
            System.out.printf("%.0f",a5);
        else
            System.out.print("N");
        in.close();
    }

}

说出来你们可能不信….Java 超时了:)