给定一系列正整数,请按要求对数字进行分类,并输出以下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”。
13 1 2 3 4 5 6 7 8 9 10 20 16 18
30 11 2 9.7 9
总共13个数字
} 为什么提示我格式错误 该怎么改呢?求大神指点
#include<iostream>
#include<iomanip>
using namespace std;
int main(){
int num;
int i = 0;
bool isadd = 1;
int num_a4 = 0;
while (cin >> num){
int * arr = new int[num];
int A1=0, A2=0, A3=0, A5=0;
double A4 = 0;
for (i = 0; i < num; i++){
cin >> arr[i];
//A1
if (arr[i] % 5 == 0 && arr[i] % 2 == 0){
A1 += arr[i];
}
//A2
if (arr[i] % 5 == 1){
if (isadd){
A2 += arr[i];
}
else{
A2 -= arr[i];
}
isadd = !isadd;
}
//A3
if (arr[i] % 5 == 2){
A3++;
}
//A4
if (arr[i] % 5 == 3){
A4 += arr[i];
num_a4++;
}
//A5
if (arr[i] % 5 == 4){
if (arr[i] > A5){
A5 = arr[i];
}
}
}
if (A1 == 0){
cout << "N" << " ";
}
else{
cout << A1 << " ";
}
if (A2 == 0){
cout << "N" << " ";
}
else{
cout << A2 << " ";
}
if (A3 == 0){
cout << "N" << " ";
}
else{
cout << A3 << " ";
}
if (A4 == 0){
cout << "N" << " ";
}
else{
cout << fixed << setprecision(1) << A4 / num_a4 << " ";
}
if (A5 == 0){
cout << "N" << endl;
}
else{
cout << A5 << endl;
}
}
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int a1 = 0;
int a2 = 0;
int a3 = 0;
double a4 = 0;
int a5 = 0;
int i = 0;
int temp = 1;
int count = 0;
while (i++ < n){
int value = scanner.nextInt();
if (value % 5 == 0 && value % 2 == 0) a1 += value;
if (value % 5 == 1){
a2 += temp * value;
temp *= -1;
}
if (value % 5 == 2) a3++;
if (value % 5 == 3) {
a4 += value;
count++;
}
if (value % 5 == 4 && value > a5) a5 = value;
}
if (a1 != 0) System.out.print(a1 + " ");
else System.out.print("N ");
if (a2 != 0) System.out.print(a2 + " ");
else System.out.print("N ");
if (a3 != 0) System.out.print(a3 + " ");
else System.out.print("N ");
if (a4 != 0) System.out.format("%.1f ",a4/count);
else System.out.print("N ");
if (a5 != 0) System.out.print(a5);
else System.out.print("N");
scanner.close();
}
} #include<iostream>
#include <algorithm>
#include<cstdio>
using namespace std;
const int maxn=1000+10;
int arr[6][maxn];
int count_0=0;
int count_1,count_2,count_3,count_4,count_5=0;
int n;
int main(){
cin>>n;
//(cin>>arr[0][count_0]){
for(int i=0;i<n;i++){
cin>>arr[0][count_0];
if(arr[0][count_0]%5==0){
arr[1][count_1++]=arr[0][count_0++];
}
if(arr[0][count_0]%5==1){
arr[2][count_2++]=arr[0][count_0++];
}
if(arr[0][count_0]%5==2){
arr[3][count_3++]=arr[0][count_0++];
}
if(arr[0][count_0]%5==3){
arr[4][count_4++]=arr[0][count_0++];
}
if(arr[0][count_0]%5==4){
arr[5][count_5++]=arr[0][count_0++];
}
}//输入完成 建立起这些对应的组别
int sum_1=0;
int newway=0;
for(int i=0;i<count_1;i++){
if(arr[1][i]%2==0){
sum_1+=arr[1][i];
newway++;
}
}
if(newway!=0){
cout<<sum_1<<" ";
}else{
cout<<"N"<<" ";
}
int sum_2=0;
for(int i=0;i<count_2;i+=2){
sum_2+=arr[2][i];
}
for(int i=1;i<count_2;i+=2){
sum_2-=arr[2][i];
}
if(count_2!=0){
cout<<sum_2<<" ";
}else{
cout<<"N"<<" ";
}
if(count_3!=0){
cout<<count_3<<" ";
}else{
cout<<"N"<<" ";
}
double d=0;
int sum_4=0;
for(int i=0;i<count_4;i++){
sum_4+=arr[4][i];
}
double sum_6=(double)sum_4;
double count_6=(double)count_4;
if(count_4!=0){
d=sum_6/count_6;
printf("%.1f ",d);
}else{
cout<<"N"<<" ";
}
int b[count_5];
for(int i=0;i<count_5;i++){
b[i]=arr[5][i];
}
sort(b,b+count_5);
if(count_5!=0){
cout<<b[count_5-1];
}else{
cout<<"N"<<" ";
}
} import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
* Copyright (C), 2019-2020, CPS Lab
*
* @ProjectName: PATProjects
* @Package: PACKAGE_NAME
* @ClassName: PAT1002B
* @Author: Tristan Shu
* @CreateDate: 2020/10/19 7:00 下午
* @Version: 1.0
*/
public class PAT1002B {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int N = scanner.nextInt();
List<Integer> A1 = new ArrayList<>();
List<Integer> A2 = new ArrayList<>();
List<Integer> A3 = new ArrayList<>();
List<Integer> A4 = new ArrayList<>();
List<Integer> A5 = new ArrayList<>();
for(int i = 0; i < N; i++){
int temp = scanner.nextInt();
switch (temp % 5){
case 0:
A1.add(temp);
break;
case 1:
A2.add(temp);
break;
case 2:
A3.add(temp);
break;
case 3:
A4.add(temp);
break;
case 4:
A5.add(temp);
break;
default:
break;
}
}
System.out.print(getEvenSum(A1) + " ");
System.out.print(getSpeSum(A2) + " ");
System.out.print(getNum(A3) + " ");
System.out.print(getAverage(A4) + " ");
System.out.print(getMax(A5));
}
private static String getEvenSum(List<Integer> list){
int sum = 0;
if(list.isEmpty()){
return "N";
}
while (!list.isEmpty()){
if(list.get(0) % 2 == 0){
sum += list.remove(0);
}else {
list.remove(0);
}
}
return sum == 0 ? "N":String.valueOf(sum);
}
private static String getSpeSum(List<Integer> list){
int sum = 0;
if(list.isEmpty()){
return "N";
}
while (!list.isEmpty()){
sum += list.remove(0);
if(!list.isEmpty()) {
sum -= list.remove(0);
}
}
return String.valueOf(sum);
}
private static int getNum(List<Integer> list){
return list.size();
}
private static String getAverage(List<Integer> list){
int num = getNum(list);
if(list.isEmpty()){
return "N";
}
float ans = 0;
int sum = 0;
while (!list.isEmpty()){
sum += list.remove(0);
}
ans = sum/(float)num;
return String.format("%.1f",ans);
}
private static String getMax(List<Integer> list){
if(list.isEmpty()){
return "N";
}
int max = Integer.MIN_VALUE;
while(!list.isEmpty()){
max = Math.max(max, list.remove(0));
}
return String.valueOf(max);
}
}
int main(){
int n;
cin>>n;
int a[6]={0},b[6]={0};
int a2=1,a4=0;
while(n--){
int x;
cin>>x;
switch(x%5){
case 0:if(x%2==0){a[1]+=x;b[1]++;}break;
case 1:a[2]+=x*a2;a2=-a2;b[2]++;break;
case 2:a[3]++;b[3]++;break;
case 3:a[4]+=x;a4++;b[4]++;break;
case 4:a[5]=max(a[5],x);b[5]++;break;
}
}
if(b[1]) cout<<a[1]<<" "; else cout<<"N ";
if(b[2]) cout<<a[2]<<" "; else cout<<"N ";
if(b[3]) cout<<a[3]<<" "; else cout<<"N ";
if(b[4]) cout<<fixed<<setprecision(1)<<(a[4]/(double)a4)<<" "; else cout<<"N ";
if(b[5]) cout<<a[5]; else cout<<"N";
return 0;
} 太长了????去掉了头文件
import java.util.Scanner;
public class Main2 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] arr=new int[n];
for(int i=0;i<n;i++){
arr[i]=sc.nextInt();
}
int A1=0,A2=0,A3=0,A5=0;
double A4=0.0;
int flag=1,count=0; //flag是为了方便计算A2,count是为了方便计算A4
for(int i=0;i<n;i++){
//A1= 能被5整除的数字中所有偶数的和;
if(arr[i]%10==0){
A1+=arr[i];
}
//A2= 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
if(arr[i]%5==1){
A2+=flag*arr[i];
flag=-flag;
}
//A3= 被5除后余2的数字的个数;
if(arr[i]%5==2){
A3++;
}
//A4= 被5除后余3的数字的平均数,精确到小数点后1位;
if(arr[i]%5==3){
A4+=arr[i];
count++;
}
//A5= 被5除后余4的数字中最大数字。
if(arr[i]%5==4){
if(A5<arr[i]){
A5=arr[i];
}
}
}
//按照题目上的要求输出即可
if(A1!=0){
System.out.print(A1+" ");
} else{
System.out.print('N'+" ");
}
if(A2!=0){
System.out.print(A2+" ");
} else{
System.out.print('N'+" ");
}
if(A3!=0){System.out.print(A3+" ");
} else{
System.out.print('N'+" ");
}
if(A4!=0){
System.out.printf("%.1f ",A4/count);
} else{
System.out.print("N"+" ");
}
if(A5!=0){
System.out.print(A5);
} else{
System.out.print("N");
}
}
}
#include<iostream>
#include <iomanip>
using namespace std;
int arr[1001];
int sum1=0;
int sum2=0;
int sum4=0;
int maxnum=0;
char c;
int a2=0,a3=0;
float a4=0;
int len;
int flag=0;
int main(){ int R; cin>>len; for(int i=0;i<len;i++){ cin>>arr[i]; c=cin.get(); R=arr[i]%5; if(R==0){ if(arr[i]%2==0){ sum1+=arr[i]; } }else if(R==1){ if(flag==0){ sum2+=arr[i]; a2++; flag=1; }else if(flag==1){ sum2-=arr[i]; a2++; flag=0; } }else if(R==2){ a3++; }else if(R==3){ sum4+=arr[i]; a4++; }else if(R==4){ if(maxnum<arr[i]){ maxnum=arr[i]; } } if(c=='\n'){ break; } } (sum1==0)?(cout<<"N"):(cout<<sum1); if(sum2==0&&a2==0){ cout<<" "<<"N"; }else if(sum2==0){ cout<<" "<<0; }else{ cout<<" "<<sum2; } (a3==0)?(cout<<" "<<"N"):(cout<<" "<<a3); (a4==0)?(cout<<" "<<"N"):(cout<<" "<<fixed << setprecision(1) <<sum4/a4); (maxnum==0)?(cout<<" "<<"N"):(cout<<" "<<maxnum); return 0;
}
#include <iostream>
#include<iomanip>
using namespace std;
int main()
{
int n,i,m;
int sum1=0,sum2=0,sum4=0;
int count1=0,count2=0,count3=0,count4=0,count5=0,max5=0,flag=1;
float ave;
cin>>n;
for(i=1;i<=n;i++)
{
cin>>m;
if((m%5==0)&&(m%2==0))
{
sum1+=m;
count1++;
}
else if(m%5==1)
{
sum2=sum2+flag*m;
flag*=-1;
count2++;
}
else if(m%5==2)
{
count3+=1;
}
else if(m%5==3)
{
sum4+=m;
count4++;
}
else if(m%5==4)
{
if(m>=max5)
{
max5=m;
}
count5++;
}
}
if(count1==0)cout<<"N"<<" ";
else cout<<sum1<<" ";
if(count2==0)cout<<"N"<<" ";
else cout<<sum2<<" ";
if(count3==0)cout<<"N"<<" ";
else cout<<count3<<" ";
if(count4==0)cout<<"N"<<" ";
else
{
ave=float(sum4)/(float(count4));
cout<<fixed<<setprecision(1)<<ave<<" ";
}
if(count5==0)cout<<"N";
else cout<<setprecision(0)<<max5;
}
题目不难,注意好格式即可,改成小数后要把格式再改回去,计算时用个类型转换,轻轻松松
public class Main { public static void main(String[] args) { int n, num; int a1, a2, a3, a4, a4Count, a5; a1 = a2 = a3 = a4 = a4Count = 0; a5 = Integer.MIN_VALUE; boolean a2Add = true; Scanner scanner = new Scanner(System.in); n = scanner.nextInt(); for (int i = 0; i < n; i++) { num = scanner.nextInt(); if (num % 5 == 0 && num % 2 == 0) { a1 += num; } if (num % 5 == 1) { if (a2Add) { a2 += num; } else { a2 -= num; } a2Add = !a2Add; } if (num % 5 == 2) { a3++; } if (num % 5 == 3) { a4 += num; a4Count++; } if (num % 5 == 4) { if (num > a5) { a5 = num; } } } scanner.close(); System.out.print(a1 != 0 ? a1 + " " : "N "); System.out.print(a2 != 0 ? a2 + " " : "N "); System.out.print(a3 != 0 ? a3 + " " : "N "); if (a4Count == 0) { System.out.print("N "); }else { System.out.printf("%.1f ",1.0 * a4 / a4Count); } System.out.print(a5 != Integer.MIN_VALUE ? a5 : "N"); } }
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <algorithm>
#include <iostream>
#include <cmath>
using namespace std;
int a[1002],b[6];
int main()
{
double a2=0,a4=0;
int n,a1=0,a3=0,a5=0,cnt=0,cmt=0;
scanf("%d",&n);
for(int i=0; i<n; i++)
{
scanf(" %d",&a[i]);
if(a[i]%5==0&&a[i]%2==0)
a1+=a[i],b[0]=a1;//将值存在b数组里,一下同理
if(a[i]%5==1)
{
a2+=pow(-1,cnt)*a[i];//注意pow是double类型函数
cnt++;
}
if(a[i]%5==2)
a3++,b[2]=a3;
if(a[i]%5==3)
{
a4+=a[i],b[3]=a4;
cmt++;
}
if(a[i]%5==4)
a5=max(a5,a[i]),b[4]=a5;//直接查找最大值
}
int t=(int)a2;b[1]=t;//转类型,目的是将值存入b数组
for(int i=0;i<5;i++)
{
if(b[i]==0)
{
if(i<4)//如果最后一个数为空,就不能在后面加空格
printf("N ");
else
printf("N");
}
else if(i==3)
printf("%.1f ",b[i]/(cmt*1.0));//把类型转为double型
else if(i==4)
printf("%d",b[i]);
else
printf("%d ",b[i]);
}
return 0;
} #include <iostream>
#include<cstdio>
#include<iomanip>
#include<vector>
using namespace std;
vector<int> a5;
int n,m,a1=0,a2=0,a3=0,a4=0,mlt=1;
float a4sum=0;
int main()
{
cin>>n;
for(int i=0;i<n;i++){
cin>>m;
if(m%5==0&&m%2==0)
a1+=m;
else if(m%5==1){
a2+=mlt*m;
mlt*=-1;
}
else if(m%5==2)
a3++;
else if(m%5==3)
{
a4sum+=m;
a4++;
}
else if(m%5==4){
a5.push_back(m);
}
m=0;
}
(a1)?(cout<<a1<<" "):cout<<'N'<<" ";
(a2)?(cout<<a2<<" "):cout<<'N'<<" ";
(a3)?(cout<<a3<<" "):cout<<'N'<<" ";
(a4)?(cout<<fixed<<setprecision(1)<<a4sum/a4<<" "):cout<<'N'<<" ";
if(a5.size()){
int max=a5[0];
for(int i=0;i<a5.size();i++){
if(a5[i]>max)
max=a5[i];
}
cout<<max;
}
else
cout<<'N';
return 0;
}