题目链接:1012 数字分类 (20 分)
#include<stdio.h>
int main()
{
int count[5]={0};//初始化
int ans[5]={0};
int n,t;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&t);
if(t%5==0)
{
if(t%2==0)
{
ans[0]=ans[0]+t;
count[0]++;
}
}
else if(t%5==1)
{
if(count[1]%2==0)
{
ans[1]=ans[1]+t;
}
else{
ans[1]=ans[1]-t;
}
count[1]++;
}
else if(t%5==2)
{
count[2]++;
}
else if(t%5==3)
{
ans[3]=ans[3]+t;
count[3]++;
}
else{
if(t>ans[4])
{
ans[4]=t;
}
count[4]++;
}
}
if(count[0]==0)printf("N ");
else printf("%d ",ans[0]);
if(count[1]==0)printf("N ");
else printf("%d ",ans[1]);
if(count[2]==0)printf("N ");
else printf("%d ",count[2]);
if(count[3]==0)printf("N ");
else printf("%.1f ",(double)ans[3]/count[3]);
if(count[4]==0)printf("N");
else printf("%d",ans[4]);
return 0;
}
方法二
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, num;
int A1 = 0, A2 = 0, A5 = 0;
double A4 = 0.0;
cin >> n;
vector<int> v[5];//定义一个二维数组
for (int i = 0; i < n; i++) {
cin >> num;
v[num%5].push_back(num);
}
for (int i = 0; i < 5; i++)//计算各位结果
{
for (int j = 0; j < v[i].size(); j++) {
if (i == 0 && v[i][j] % 2 == 0) A1 += v[i][j];
if (i == 1 && j % 2 == 0) A2 += v[i][j];
if (i == 1 && j % 2 == 1) A2 -= v[i][j];
if (i == 3) A4 += v[i][j];
if (i == 4 && v[i][j] > A5) A5 = v[i][j];
}
}
for (int i = 0; i < 5; i++)//打印结果
{
if (i != 0) printf(" ");
if (i == 0 && A1 == 0 || i != 0 && v[i].size() == 0) {
printf("N"); continue;
}
if (i == 0) printf("%d", A1);
if (i == 1) printf("%d", A2);
if (i == 2) printf("%d", v[2].size());
if (i == 3) printf("%.1f", A4 / v[3].size());
if (i == 4) printf("%d", A5);
}
return 0;
}