PAT Basic 1012

PAT Basic 1012. 数字分类 (20)

时间限制
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

解答:一个数组cal[6]初始全置为0,cal[i]=1分别表示A1, A2, A3, A4, A5是否经过计算, 用于在最后判断cal[i]==0来输出’N’或是对应的A1, A2, A3, A4, A5

#include 
#include 
#include 

//AC

using namespace std;

int main(){
    int n, x, mod;
    cin>>n;
    int f=1, cnt=0;
    int a1, a2, a3, a5;
    a1=a2=a3=a5=0;
    double a4;
    a4=0;
    int cal[6];
    memset(cal, 0, sizeof(cal));
    for(int i=0;icin>>x;
        mod=x%5;
        switch (mod){
            case 0:
                if(x%2==0){
                    cal[1]=1;
                    a1=a1+x;
                }
                break;
            case 1:
                cal[2]=1;
                a2=a2+f*x;
                f=-f;
                break;
            case 2:
                cal[3]=1;
                a3++;
                break;
            case 3:
                cal[4]=1;
                a4=a4+x;
                cnt++;
                break;
            case 4:
                cal[5]=1;
                if(a5break;
        }
    }
    if(cnt) a4=a4/cnt;
    if(cal[1]==0) cout<<"N"<<" ";
    else cout<" ";
    if(cal[2]==0) cout<<"N"<<" ";
    else cout<" ";
    if(cal[3]==0) cout<<"N"<<" ";
    else cout<" ";
    if(cal[4]==0) cout<<"N"<<" ";
    else cout<1)<" ";
    if(cal[5]==0) cout<<"N"<else cout<return 0;
}

你可能感兴趣的:(PAT)