给定一系列正整数,请按要求对数字进行分类,并输出以下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个数字
import java.math.BigDecimal; import java.math.RoundingMode; import java.text.DecimalFormat; import java.util.Scanner; public class Main { public static void main(String[] args) { Mian c = new Mian(); Scanner in = new Scanner(System.in); System.out.println("请输入数的个数"); int N = in.nextInt(); int[] arr = new int[N]; for (int i = 0; i < N; i++) { arr[i] = in.nextInt(); } String[] s = new String[5]; if(c.Even_Sum(arr,N) ==-1) s[0] ="N"; else { s[0] = String.valueOf(c.Even_Sum(arr,N)); } if(c.Chu5yu1(arr,N) == -1) s[1] ="N"; else { s[1] = String.valueOf(c.Chu5yu1(arr,N)); } if(c.Yu2Num(arr,N) == -1) s[2] ="N"; else { s[2] = String.valueOf(c.Yu2Num(arr,N)); } if(c.Aver(arr,N) == -1) s[3] ="N"; else { s[3] = String.valueOf(c.Aver(arr,N)); } if(c.Find_Max(arr,N) == -1) s[4] ="N"; else { s[4] = String.valueOf(c.Find_Max(arr,N)); } for(String s2: s){ System.out.print(s2+" "); } } public int Even_Sum(int[] aarr, int N) { int sum = 0; int count = 0; for (int i = 0; i < N; i++) { if (aarr[i] % 5 == 0 && aarr[i] % 2 == 0) { sum += aarr[i]; count++; } } if (count > 0) return sum; else return -1; } public int Chu5yu1(int[] aarr, int N) { int sum = 0; int count = 0; int count1 = 0; for (int i = 0; i < N; i++) { if (aarr[i] % 5 == 1) { if (count1 % 2 == 0) { sum += aarr[i]; } else { sum -= aarr[i]; } count1++; } } if (count1 > 0) return sum; else return -1; } public int Yu2Num(int[] arr, int N) { int count = 0; for (int i = 0; i < N; i++) { if (arr[i] % 5 == 2) { count++; } } if (count > 0) return count; else return -1; } public double Aver(int[] arr, int N) { double count = 0; double Sum = 0; double sum = 0; for (int i = 0; i < N; i++) { if (arr[i] % 5 == 3) { sum += arr[i]; count++; } } if (count > 0) { Sum = sum / count; // DecimalFormat df = new DecimalFormat("#.00"); // String formattedvalue = df.format(Sum);//字符串形式 BigDecimal bd = BigDecimal.valueOf(Sum).setScale(1, RoundingMode.HALF_UP); return bd.doubleValue(); } else return -1; } public int Find_Max(int[] arr, int N) { int count = 0; int max = 0; for (int i = 0; i < N; i++) { if (arr[i] % 5 == 4) { count++; if (arr[i] > max) max = arr[i]; } } if (count > 0) return max; else return -1; } }
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(); } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scan=new Scanner(System.in); int N=scan.nextInt(); int a1=0; int a2=0; boolean b2=false; boolean add=true; int a3=0; double a4=0; int num4=0; int a5=0; for (int i = 0; i < N; i++) { int x=scan.nextInt(); int m=x%5; switch(m){ case 0: if(x%2==0) a1+=x;break; case 1: { b2=true; if(add){ a2+=x; }else{ a2-=x; } add=!add; break; } case 2: a3++;break; case 3: { num4++; a4+=x; break; } case 4: { if(x>a5) a5=x; break; } } } String A1=(a1==0)?"N":Integer.toString(a1); String A2=(b2)?Integer.toString(a2):"N"; //a3 String A3=(a3==0)?"N":Integer.toString(a3); String A4; if(num4==0){ A4="N"; }else{ a4=Math.round(10*a4/num4)/10.0; A4=Double.toString(a4); } String A5=(a5==0)?"N":Integer.toString(a5); System.out.printf("%s %s %s %s %s%n",A1,A2,A3,A4,A5); } }
import java.text.DecimalFormat; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Main{ public static void main(String[] args){ int i = 0; Scanner input = new Scanner(System.in); int N = input.nextInt(); int[] nums = new int[N]; while(i <N){ nums[i++] = input.nextInt(); } NumberSorting(nums); } private static void NumberSorting(int[] nums){ boolean flag1 = false,flag2 = false,flag3 = false, flag4 = false,flag5 = false; int A1Sum = 0; int A2Sum; int A3Count = 0; String A4Average; int maxnum = 0; List<Integer> lst = new ArrayList<>(); List<Integer> lst1 = new ArrayList<>(); List<Integer> lst2 = new ArrayList<>(); for (int num : nums) { if (num % 5 == 0) { lst.add(num); } if (num % 5 == 1) { lst1.add(num); flag2 = true; } if (num % 5 == 2) { A3Count++; flag3 = true; } if (num % 5 == 3) { lst2.add(num); flag4 = true; } if (num % 5 == 4) { maxnum = Math.max(num, maxnum); flag5 = true; } } for (Integer val : lst) { if (val % 2 == 0) { A1Sum += val; flag1 = true; } } int sum = 0,sum1 = 0; for (int i = 0; i <lst1.size() ; i++) { if(i %2 == 0){ sum += lst1.get(i); }else{ sum1 += lst1.get(i); } } A2Sum = sum - sum1; int sum2 = 0; for(Integer e : lst2){ sum2 += e; } DecimalFormat df = new DecimalFormat("#.0"); A4Average = df.format((sum2 / (double)lst2.size())); if(flag1){ System.out.print(A1Sum+" "); }else{ System.out.print("N"+" "); } if(flag2){ System.out.print(A2Sum + " "); }else { System.out.print("N"+" "); } if(flag3){ System.out.print(A3Count+" "); }else{ System.out.print("N"+" "); } if(flag4){ System.out.print(A4Average+" "); }else { System.out.print("N"+" "); } if(flag5){ System.out.print(maxnum); }else { System.out.print("N"); } } }
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int i = in.nextInt(); int flag = 0; int A1 = 0, A2 = 0, A3 = 0, A4 = 0, A4_sum = 0, A5 = 0; while (i > 0) { int anInt = in.nextInt(); int yuShu = anInt % 5; if (yuShu == 0) { if (anInt % 2 == 0) { A1 += anInt; } } else if (yuShu == 1) { A2 += Math.pow(-1, flag) * anInt; flag++; } else if (yuShu == 2) { A3++; } else if (yuShu == 3) { A4_sum += anInt; A4++; } else { if (anInt>A5){ A5 = anInt; } } i--; } String A1_str = "N"; String A2_str = "N"; String A3_str = "N"; String A4_str = "N"; String A5_str = "N"; if (A1 != 0) { A1_str = String.valueOf(A1); } if (A2 != 0) { A2_str = String.valueOf(A2); } if (A3 != 0) { A3_str = String.valueOf(A3); } if (A4 != 0) { A4_str = String.format("%.1f", A4_sum / (double) A4); } if (A5 != 0) { A5_str = String.valueOf(A5); } System.out.println(A1_str + " " + A2_str + " " + A3_str + " " + A4_str + " " + A5_str); } }
import java.util.Scanner; public class Main{ public static void main(String [] args){ Scanner sc = new Scanner(System.in); while(sc.hasNext()){ int N = sc.nextInt(); int[] input = new int[N]; for(int i=0; i<N; i++){ input[i] = sc.nextInt(); } int[] a = new int[5]; int max = 0; int count = 0; // 记录平均数要算几个 int seq = 1; // 交错加减时要用 for(int i=0; i<N; i++){ int c = input[i]%5; if(c == 0){ if(input[i]%2 == 0){ a[0]+=input[i]; } }else if(c == 1){ if(seq%2 == 1){ a[1]+=input[i]; } else{ a[1] -= input[i]; } seq++; }else if(c == 2){ a[2]++; }else if(c == 3){ a[3]+=input[i]; count++; }else { if(input[i] > a[4]){ a[4] = input[i]; } } } for(int i=0; i<4; i++){ if(a[i] == 0){ System.out.print("N "); }else if(i == 3){ double res = (double)a[i]/count; System.out.print(String.format("%.1f",res) + " "); }else{ System.out.print(a[i] + " "); } } if(a[4] == 0){ System.out.print("N"); }else { System.out.print(a[4]); } } } }
import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner in=new Scanner(System.in); while(in.hasNext()) { int n=in.nextInt(); int []num=new int[n]; for(int i=0;i<num.length;i++) { num[i]=in.nextInt(); } int A1=0;int a=0; int A2=0;int b1=0; int A3=0;int c=0; int A4=0; int A5=0;int e=0; int b=1;double d=0; for(int i=0;i<num.length;i++) { if(num[i]%5==0&&num[i]%2==0) { A1+=num[i];a++; } if(num[i]%5==1) { A2=A2+b*num[i]; b=-b;b1++; } if(num[i]%5==2) { A3++;c++; } if(num[i]%5==3) { d++; A4+=num[i]; } if(num[i]%5==4) { if(num[i]>A5) { A5=num[i];e++; } } } //System.out.print(a); if(a==0) { System.out.print("N "); }else { System.out.print(A1+" "); } System.out.print(b1!=0 ? A2+" ":"N "); System.out.print(c!=0 ? A3+" ":"N "); System.out.print(d!=0 ? String.format("%.1f", A4/d)+" ":"N "); System.out.print(e!=0 ? A5:"N "); } } }
import java.util.Scanner; import java.text.DecimalFormat; public class Main{ public static void main(String[] args){ Scanner scanner = new Scanner(System.in); Integer num_A1 = 0; Integer num_A2 = 0; Integer num_A3 = 0; Integer num_A4 = 0; Integer num_A5 = 0; int num_A4_count = 0; int lol = -1; boolean b_A1 = false; boolean b_A2 = false; boolean b_A3 = false; boolean b_A4 = false; boolean b_A5 = false; while(scanner.hasNext()){ Integer tmp = scanner.nextInt(); switch(tmp%5){ case 0: if(tmp%2 ==0){ b_A1 = true; num_A1 += tmp; } break; case 1: b_A2 = true; lol = (-1)*lol; num_A2 += lol*tmp; break; case 2: b_A3 = true; num_A3++; break; case 3: b_A4 = true; num_A4 += tmp; num_A4_count++; break; case 4: b_A5 = true; if(tmp>num_A5){ num_A5 = tmp; } break; } } System.out.println((b_A1?num_A1:"N")+" "+(b_A2?num_A2:"N")+" "+(b_A3?num_A3:"N")+" "+(b_A4?(new DecimalFormat("#.0").format(num_A4/num_A4_count)):"N")+" "+(b_A5?num_A5:"N")); } }
import java.util.Scanner; public class Main { public static void main(String[] args) { numberClassify(); } static void numberClassify() { Scanner scanner = new Scanner(System.in); int num = scanner.nextInt(); int A1 = 0, A2 = 0, A3 = 0, A5 = 0; int factor = -1; int numA4 = 0; float A4 = 0; for (int i = 0; i < num; i++) { int number = scanner.nextInt(); switch (number % 5) { case 0: if (number % 2 == 0) { A1 += number; } break; case 1: factor = -factor; A2 += factor * number; break; case 2: A3++; break; case 3: numA4++; A4 += number; break; case 4: if (number > A5) { A5 = number; } break; default: } } // System.out.println(A4); if (numA4 != 0) { int temp = Math.round(A4 * 10 / numA4); A4 = (float) temp / 10; } System.out.println((A1 == 0 ? "N" : A1) + " " + (A2 == 0 ? "N" : A2) + " " + (A3 == 0 ? "N" : A3) + " " + (numA4 == 0 ? "N" : A4) + " " + (A5 == 0 ? "N" : A5)); } }
new DecimalFormat("#.0").format(A4 / numA4))
import java.text.DecimalFormat; import java.util.Scanner; public class Main { public static void main(String [] args){ Scanner s=new Scanner(System.in); int n=s.nextInt(); int a1=0,a2=0,a3=0,a4=0,a5=0; boolean b1=false,b2=false,b3=false,b4=false,b5=false; int []a=new int[n]; int factor=1; int k=0; String c4=" "; for(int i=0;i<n;i++) { a[i]=s.nextInt(); } for(int i=0;i<n;i++) { switch(a[i]%5){ case 0: if(a[i]%2==0) { a1+=a[i]; b1=true; } break; case 1: a2+=a[i]*factor; factor=-factor; b2=true; break; case 2: a3++; b3=true; break; case 3: a4+=a[i]; k++; b4=true; break; case 4: if(a5<a[i]) { a5=a[i]; b5=true; } break; } } if(b1) System.out.print(a1+" "); else System.out.print("N "); if(b2) System.out.print(a2+" "); else System.out.print("N "); if(b3) System.out.print(a3+" "); else System.out.print("N "); if(b4) { c4 = new DecimalFormat("0.0").format(a4*1.0/k); System.out.print(c4+" "); } else System.out.print("N "); if(b5) System.out.print(a5); else System.out.print("N"); } }
import java.util.Scanner;
public class Main { private final static Scanner input = new Scanner(System.in); public static void main(String[] args) { int number = input.nextInt(); float[] result = new float[5]; int exchange = 1, count = 0; for (int i = 0; i < number; i++) { int temp = input.nextInt(); if (temp % 5 == 0) { if (temp % 2 == 0) { result[0] += temp; } } if (temp % 5 == 1) { result[1] += (temp * exchange); exchange = -exchange; } if (temp % 5 == 2) { ++result[2]; } if (temp % 5 == 3) { result[3] += temp; ++count; } if (temp % 5 == 4) { if (result[4] < temp) { result[4] = temp; } } } for (int i = 0; i < result.length; i++) { if (result[i] == 0) { System.out.println((i==4)?"N":"N "); } else if (i == 3) { System.out.print(String.format("%.1f", result[i] / count) + " "); } else if ((i == 4)) { System.out.print((int) result[i]); }else { System.out.print((i==4)?(int) result[i]:(int) result[i] + " "); } } } }
自己都有点嫌弃这个代码呢,不过可以AC~~~import java.util.Scanner;
public class Main {
public static void main(String[] args) {
@SuppressWarnings("resource")
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int A1 = 0;// A1也就是能被10整除的数字之和
int A2 = 0;// A2也就是将被5除后余1的数字按给出顺序进行交错求和
double A4 = 0;// 被5除后余3的数字的平均数,精确到小数点后1位
int A2TemporaryVariable = 0;
int A3TemporaryVariable = 0;
int A4TemporaryVariable = 0;
int maxNum = 0;
for (int i = 0; i < n; i++) {
// 开始一个一个输入,一个一个进行相应的计算
int num = in.nextInt();
if (num % 10 == 0) {
A1 += num;
} else if (num % 5 == 1) {
A2 += Math.pow(-1, A2TemporaryVariable) * num;
A2TemporaryVariable++;
} else if (num % 5 == 2) {
A3TemporaryVariable++;
} else if (num % 5 == 3) {
A4 += num;
A4TemporaryVariable++;
} else if (num % 5 == 4) {
if (num > maxNum) {
maxNum = num;
}
}
}
if (A1 == 0) {
System.out.print("N" + " ");
} else {
System.out.print(A1 + " ");
}
if (A2 == 0) {
System.out.print("N" + " ");
} else {
System.out.print(A2 + " ");
}
if (A3TemporaryVariable == 0) {
System.out.print("N" + " ");
} else {
System.out.print(A3TemporaryVariable + " ");
}
if (A4TemporaryVariable == 0) {
System.out.print("N" + " ");
} else {
System.out.print(String.format("%.1f" + " ", A4 / A4TemporaryVariable));
}
if (maxNum == 0) {
System.out.print("N");
} else {
System.out.print(maxNum);
}
}
}
importjava.util.*; importjava.math.BigDecimal; importjava.text.DecimalFormat; publicclassMain{ publicstaticvoidmain(String[] args){ Scanner input=newScanner(System.in); intN=input.nextInt(); intk[]=newint[N]; intA[]=newint[5]; intsum[]=newint[5]; intt=0; for(inti=0;i<N;i++){ k[i]=input.nextInt(); } for(inti=0;i<N;i++){ if(k[i]%5==0&&k[i]%2==0){ sum[0]++; A[0]+=k[i]; }elseif(k[i]%5==1){ sum[1]++; A[1]=A[1]+(int)Math.pow(-1,t)*k[i]; t++; }elseif(k[i]%5==2){ sum[2]++; A[2]++; }elseif(k[i]%5==3){ sum[3]++; A[3]+=k[i]; }elseif(k[i]%5==4){ sum[4]++; A[4]=A[4]<k[i]?k[i]:A[4]; } } for(inti=0;i<4;i++){ if(sum[i]==0){ System.out.print("N "); } elseif(i!=3){ System.out.print(A[i]+" "); }else{ doublef=(double)A[i]/(double)sum[i]; DecimalFormat df=newDecimalFormat(); BigDecimal b = newBigDecimal(f); doublef1 = b.setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue(); System.out.print(f1+" "); } } if(sum[4]==0){ System.out.print("N"); }else{ System.out.print(A[4]); } } } |
一开始为了省事用了数组,实际上用基本类型代码会更少。
本题的测试用例没有考虑到偶数个被5除余1的数的边界情况,比如测试用例"2 5 5”。直接判断A2==0然后输出N属于投机取巧,出题的锅。
另外一开始没有注意题干说的是正整数,设计数组f存放标志其实可以不用的。
如有错误,欢迎指正。
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int[] a = new int[5];
boolean[] f = new boolean[5];
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int j = 0;
int n2 = 0;
int n4 = 0;
while (j++ < n) {
int i = sc.nextInt();
int r = i % 5;
switch (r) {
case 0:
if (i % 2 == 0) {
f[0] = true;
a[0] += i;
}
break;
case 1:
f[1] = true;
if (++n2 % 2 == 0) {
a[1] -= i;
} else {
a[1] += i;
}
break;
case 2:
f[2] = true;
a[2]++;
break;
case 3:
f[3] = true;
a[3] += i;
n4++;
break;
case 4:
f[4] = true;
a[4] = Math.max(a[4], i);
break;
default:
break;
}
}
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 5; i++) {
if (f[i] == false) {
sb.append("N");
} else {
if (i != 3) {
sb.append(a[i]);
} else {
DecimalFormat df = new DecimalFormat("0.0");
df.setRoundingMode(RoundingMode.HALF_UP);
sb.append(df.format(((double) a[3]) / n4));
}
}
sb.append(" ");
}
sb.deleteCharAt(sb.length()-1);
System.out.println(sb.toString());
}
}
//输出有些不太好,但是自己的第一想法是这个,所以就没更改,刚看了评论区, //有System.out.print(a3==0?"N ":a3+" ");这种方法。书写更简单 import java.util.Scanner; public class Mian{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt();//获取第一个值 int[] a = new int[num]; int[] tem = new int[num]; for(int i = 0; i < num;i++){ tem[i] = sc.nextInt(); a[i] = tem[i]%5; } int A1 = 0,A2 = 0,A22 = 0,A3 = 0,A44 = 0,A5 = 0; double A4 = 0.0; boolean a1 = false,a2 = false,a3 = false,a4 = false,a5 = false; for(int i = 0; i < num;i++){ switch(a[i]){ case 0 : if(tem[i] % 2 == 0){ A1 += tem[i]; a1 = true;}break; case 1 : { a2 = true; if(A22%2 == 0) A2 += tem[i]; else A2 -= tem[i]; }A22++;break; case 2 : a3 = true; A3++;break; case 3 : a4 = true; A44++;A4 += tem[i];break; case 4 : a5 = true; if(tem[i] > A5)A5 = tem[i];break; } } if(a1) System.out.print(A1+" "); else System.out.print("N "); if(a2) System.out.print(A2+" "); else System.out.print("N "); if(a3) System.out.print(A3+" "); else System.out.print("N "); if(a4) System.out.printf("%.1f ",A4/A44); else System.out.print("N "); if(a5) System.out.print(A5); else System.out.print("N"); } }
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
int[] arr = new int[N];
int sum = 0;// 能被5整除的数字中所有偶数的和
int sum1 = 0;//将被5除后余1的数字按给出顺序进行交错求和
int sum2 = 0;//被5除后余2的数字的个数
int sum3 = 0;//被5除后余3的数字的和
int max = 0;//被5除后余4的数字中最大数字
int i = 0;
int j = 1;//对将被5除后余1的数字进行标记
int num = 0;//被5除后余3的数字的个数
while (i < N){
arr[i] = sc.nextInt();
int y = arr[i]%5;
switch (y){
case 0:
if (arr[i]%2 == 0){
sum += arr[i];
}
break;
case 1:
if(j % 2 == 1){
sum1 += arr[i];
} else {
sum1 -= arr[i];
}
j++;
break;
case 2:
sum2++;
break;
case 3:
sum3 += arr[i];
num++;
break;
case 4:
if(arr[i] > max){
max = arr[i];
}
break;
}
i++;
}
if(sum == 0){
System.out.print("N ");
}else {
System.out.print(sum+" ");
}
if(j == 1){
System.out.print("N ");
}else {
System.out.print(sum1+" ");
}
if(sum2 == 0){
System.out.print("N ");
}else {
System.out.print(sum2+" ");
}
if(num == 0){
System.out.print("N ");
}else {
System.out.print(String.format("%.1f",(double)sum3/num)+" ");
}
if(max == 0){
System.out.print("N");
}else{
System.out.print(max);
}
}
}