给定一系列正整数,请按要求对数字进行分类,并输出以下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<stdlib.h> #include<cstring> using namespace std; #define N 10001 int one(int* a,int b) { int sum = 0; for(int i = 0;i<b;i++) { if(a[i]%5==0&&a[i]%2==0)sum+=a[i]; } return sum; } int two(int* a,int b) { int sum = 0; bool la = true; for(int i = 0;i<b;i++) { if(a[i]%5==1) { if(la==false) { sum-=a[i];la = true; } else { sum+=a[i]; la = false; } } } return sum; } int there(int* a,int b) { int sum = 0; for(int i = 0;i<b;i++) { if(a[i]%5==2)sum++; } return sum; } float four(int* a,int b) { int sum = 0;float num = 0.0; for(int i = 0;i<b;i++) { if(a[i]%5==3){ sum+=a[i]; num+=1.0; } } if(sum==0)return 0; else return sum/num; } int five(int* a,int b) { int sum = 0; for(int i = 0;i<b;i++) { if(a[i]%5==4){ sum = sum>a[i]?sum:a[i]; } } return sum; } int main() { int a[N]; int num = 0,k = 0; while(cin>>k) { for(int i = 0;i<k;i++)cin>>a[i]; if(one(a,k)==0)cout<<"N "; else cout<<one(a,k)<<" "; if(two(a,k)==0)cout<<"N "; else cout<<two(a,k)<<" "; if(there(a,k)==0)cout<<"N "; else cout<<there(a,k)<<" "; if(four(a,k)==0)cout<<"N "; else printf("%.1f ",four(a,k)); if(five(a,k)==0)cout<<"N"<<end;; else cout<<five(a,k)<<endl; } return 0; }
} 为什么提示我格式错误 该怎么改呢?求大神指点
#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;
}