前言
环境:C++(g++6.5.0)
ps:这个真的写的很撇
题目
输入格式:
每个输入包含 1 个测试用例。每个测试用例先给出一个不超过 1000 的正整数 N,随后给出 N 个不超过 1000 的待分类的正整数。数字间以空格分隔。
输出格式:
输入样例 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
华点
- 为每个Ai(i=1,2,3,4,5)都写了函数,if根据余数的值进入相应函数;
- 用数组b[]记录是否存在某类数,若存在则改b[i]值为1
- 本来用Ai的值是否为0来判断是否存在某类数,但是最后一个测试点应该是样例都是0的情况,导致原代码无法通过
代码
/*1012 数字分类 (20分)*/
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
namespace xwm{
int count=0;
};
/*flag用于交错求和,count用于求平均数*/
int a[6]={0},b[6]={0},flag=0;
void Deal_A1(int num)
{
b[1]=1;
a[1]+=num;
}
void Deal_A2(int num)
{
b[2]=1;
if(flag==0)
{
a[2]+=num;
flag=1;
}
else
{
a[2]-=num;
flag=0;
}
}
void Deal_A3(int num)
{
b[3]=1;
a[3]++;
}
void Deal_A4(int num)
{
b[4]=1;
a[4]+=num;
xwm::count++;
}
void Deal_A5(int num)
{
b[5]=1;
if(num>a[5])
a[5]=num;
}
int main()
{
int N;
cin>>N;
int num;
for(int i=0;i<N;i++)
{
cin>>num;
if(num%5==0 && num%2==0)
Deal_A1(num);
if(num%5==1)
Deal_A2(num);
if(num%5==2)
Deal_A3(num);
if(num%5==3)
Deal_A4(num);
if(num%5==4)
Deal_A5(num);
}
int f=0;
for(int i=1;i<=5;i++)
{
if(f==0)
f++;
else
cout<<" ";
if(b[i]==0)
{
cout<<"N";
}
else if(i!=4)
{
cout<<a[i];
}
else
{
cout<<fixed<<setprecision(1)<<((double)a[i])/xwm::count;
}
}
return 0;
}