首页 > 试题广场 >

数字分类 (20)

[编程题]数字分类 (20)
  • 热度指数:108729 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定一系列正整数,请按要求对数字进行分类,并输出以下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”。
示例1

输入

13 1 2 3 4 5 6 7 8 9 10 20 16 18

输出

30 11 2 9.7 9

说明

总共13个数字  
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();
    }

}

发表于 2022-03-03 14:46:15 回复(0)
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);
		

		
	}
}

发表于 2020-03-08 15:48:49 回复(0)
import java.util.Scanner;
public class Main{
    public static void main(String[] args) {

        int A1=0;
        int A2=0;
        int A3=0;
        float A4=0;
        int A5=0;
        float s=0;
        int q=0;
        int count=1;
        String str1 = null;
        Scanner sc =new Scanner (System.in);
        int sum=sc.nextInt();
        int max=Integer.MIN_VALUE;
        int [] a =new int [sum];

        for(int i=0;i<a.length;i++) {
            a[i]=sc.nextInt();
        }
        for(int i=0;i<a.length;i++) {
            /*
             * A1 = 能被5整除的数字中所有偶数的和;
             */
            if(a[i]%5==0&&a[i]%2==0) {
                A1+=a[i];        
            }
            /*
             * A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...;
             */
            if(a[i]%5==1) {
                
                if(count%2==1)
                    a[i]=a[i];
                    else
                        a[i]=(-1)*a[i];
                    A2=A2+a[i];
                    count++;
                
            }

            /*
             * A3 = 被5除后余2的数字的个数;
             */
            if(a[i]%5==2) {
                A3+=1;
            }
            /*
             * A4 = 被5除后余3的数字的平均数,精确到小数点后1位;
             */
            if(a[i]%5==3) {

                //                System.out.println(a[i]);
                s+=a[i];
                q++;
                A4=s/q;
                str1 = String.format("%.1f",A4);
            }
            /*
             * A5 = 被5除后余4的数字中最大数字。
             */
            if(a[i]%5==4) {
                
                if(a[i]>max) {
                    max=a[i];
                }
                A5=max;
            }



        }
        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(A3==0) {
            System.out.print("N"+" ");
        }else {
            System.out.print(A3+" ");
        }
        if(str1==null) {
            System.out.print("N"+" ");
        }else {
            System.out.print(str1+" ");
        }
        if(A5==0) {
            System.out.print("N");
        }else {
            System.out.print(A5);
        }
        

    }
}

发表于 2019-07-25 00:55:14 回复(0)
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");
        }
    }
}

发表于 2019-06-13 22:25:40 回复(0)
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);  }
}

编辑于 2019-05-15 08:33:43 回复(0)
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]);
            }
        }
    }
}

发表于 2019-03-17 09:53:26 回复(0)
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 ");
  }
 }
}


发表于 2019-03-06 11:22:30 回复(0)
什么鬼
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"));
    }
}


发表于 2018-09-20 16:21:57 回复(0)
我的小数点后一位格式化用的方法稍有不一样(不是最佳的)
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))
或许会更好。
发表于 2018-06-04 20:28:24 回复(0)
importjava.text.DecimalFormat;//数字格式化包
importjava.util.*;
publicclassMain {
publicstaticvoidmain(String args[]) {
    Scanner sc=newScanner(System.in);
    inta=0,b=0,c=0,max=0,q=1,s=0;
    DecimalFormat df=newDecimalFormat("#.0");//创建格式化对象,格式为保留小数点后1位
    doubled=0.0;
    intN=sc.nextInt();//输入N
    intarr[]=newint[N];//创建数组容纳数据
    for(inti=0;i<arr.length;i++) {
        arr[i]=sc.nextInt();//开始写入数据
    }
    for(intx:arr) {//开始遍历数组
        if(x%5==0&&x%2==0) {//A1,能被5整除的偶数和
            a=x+a;
        }
         
        if(x%5==1) {//A2,将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4...
            x=x*q;
            q=q*(-1);
            b=b+x;
        }
             
        if(x%5==2) {//A3,被5除后余2的数字个数
            c=c+1;
        }
         
        if(x%5==3) {//A4,被5除后余3的数字的平均数,精确到小数点后1位
            d=d+x;
            s=s+1;
        }
        if(x%5==4&&max<x) {
            max=x;
        }
    }
    if(d==0) {
        s=1;
    }
    d=(double)d/(double)s;//当s=0的时候,语***错误
                if(a==0){
                    System.out.print("N"+" ");
                }else{
                    System.out.print(a+" ");
                }
                if(b==0){
                    System.out.print("N"+" ");
                }else{
                    System.out.print(b+" ");
                }
                if(c==0){
                    System.out.print("N"+" ");
                }else{
                    System.out.print(c+" ");
                }
                if(d==0){
                    System.out.print("N"+" ");
                }else{
                    System.out.print(df.format(d)+" ");
                }
                if(max==0){
                    System.out.print("N");
                }else{
                    System.out.print(max);
                }
}
}

发表于 2018-04-13 17:08:35 回复(0)

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");
    }
}

编辑于 2018-01-30 21:37:17 回复(0)
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] + " ");
            }
        }
    }
}

发表于 2017-11-23 01:05:13 回复(0)
自己都有点嫌弃这个代码呢,不过可以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);
        }
    }

}

编辑于 2017-09-18 16:21:41 回复(0)
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]);
        }
    }
}
发表于 2017-09-15 01:35:31 回复(0)

一开始为了省事用了数组,实际上用基本类型代码会更少。
本题的测试用例没有考虑到偶数个被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());
    }
}
编辑于 2017-08-23 16:21:27 回复(0)
//输出有些不太好,但是自己的第一想法是这个,所以就没更改,刚看了评论区,
//有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");
	}
}


发表于 2017-08-20 21:41:21 回复(0)
根据题目,A2的数有126、131、351、986,交错求和不应该是-640吗???
求解答。。。。。
发表于 2017-08-11 16:00:11 回复(2)
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);
        }
    }
}
编辑于 2017-05-06 11:35:03 回复(0)
思路不难,关键是实现(Java),整理一下我遇到的问题:
1.数据的存储:为了节省空间,采用List类型
1.1定义:
List<数据类型> list=new Arraylist<数据类型>( );  or   List<数据类型> list=new Linkedlist<数据类型>;
1.2区别:
ArrayList 和Vector是采取数组体式格式存储数据,此数组元素数大于实际存储的数据以便增长和插入元素,都容许直接序号索引元素,然则插入数据要设计到数组元素移动等内存操纵,所以索引数据快插入数据慢,Vector因为应用了synchronized办法(线程安然)所以机能上比ArrayList要差,LinkedList应用双向链表实现存储,按序号索引数据须要进行向前或向后遍历,然则插入数据时只须要记录本项的前后项即可,所以插入数度较快!
1.3用法:
添加元素:list.add(x);  or list.add(index,x);
删除元素:list.remove(x); or list.remove(index);
替换元素:list.set(index,x);//将指定元素替换为x
取出元素:list.get(index);
清空集合:list.clear();
2.保留指定位数的小数
double a4;//需要转化的数
BigDecimal bi=new BigDecimal(a4);
double a=bi.setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue();//四舍五入,保留一位小数
3.System.out.println()输出后自动换行,而System.out.print()输出后不自动换行
代码:
/*
 *author:Weily
 *time:2017.4.24
 * */
import java.util.*;
import java.math.*;
@SuppressWarnings("unchecked")
public class test1{
    public static void main(String[] srgs) {
        int N;
        int a1=0,a3=0,a2=0,a5=0;
        double a4=0,a4out=0;
        Scanner sc=new Scanner(System.in);
        N=sc.nextInt();
        int[] a=new int[N];
        for(int i=0;i<N;i++)
            a[i]=sc.nextInt();
        List<Integer> A1=new ArrayList<Integer>();
        List<Integer> A2=new ArrayList<Integer>();
        List<Integer> A3=new ArrayList<Integer>();
        List<Integer> A4=new ArrayList<Integer>();
        List<Integer> A5=new ArrayList<Integer>();
        try{
        for(int i=0;i<N;i++){
            if(a[i]%5==0) A1.add(a[i]);
            else if(a[i]%5==1) A2.add(a[i]);
            else if(a[i]%5==2) A3.add(a[i]);
            else if(a[i]%5==3) A4.add(a[i]);
            else  A5.add(a[i]);       
        }
        }catch(Exception e){}
        try{
            if(A1.isEmpty()) System.out.print("N"+" ");
        else {
            for(int i=0;i<A1.size();i++){
            if((int)A1.get(i)%2==0)
                a1=a1+(int)A1.get(i);
                }
            if(a1==0)System.out.print("N"+" ");
            else
            System.out.print(a1+" ");
        }
        if(A2.isEmpty()) System.out.print("N"+" ");         
        else {
            for(int i=0;i<A2.size();i++)
            a2=a2+(int)Math.pow(-1, i)*A2.get(i);
            System.out.print(a2+" ");
            }
        if(A3.isEmpty()) System.out.print("N"+" ");
        else {
            a3=A3.size();
            System.out.print(a3+" ");
        }
        if(A4.isEmpty())  System.out.print("N"+" ");
        else{
            double sum=0;
            for(int i=0;i<A4.size();i++) sum+=(int)A4.get(i);
            a4=sum/A4.size();
            BigDecimal bi=new BigDecimal(a4);
            a4out=bi.setScale(1,BigDecimal.ROUND_HALF_UP).doubleValue();
            System.out.print(a4out+" ");
        }
        if(A5.isEmpty()) System.out.print("N");
        else{
            int max=0;
            for(int i=0;i<A5.size();i++)
                if((int)A5.get(i)>max) max=(int)A5.get(i);
            a5=max;   
             System.out.print(a5);
        }
        }catch(Exception e){ }

}

编辑于 2017-04-25 00:05:34 回复(0)
import java.math.BigDecimal;
import java.util.Scanner;

/*
 * Dragon 2017/3/24
 * 数字分类 
 */
public class Main {

	public static void main(String[] args) 
	{
		Scanner in=new Scanner(System.in);
		String[] input=in.nextLine().split(" ");
		int len=input.length;
		
		int[] numbers=new int[len];
		for(int i=0;i<len;i++)
			numbers[i]=Integer.parseInt(input[i]);

		int a=0,b=0,c=0,d=0,e=0;
	        int flagB=-32767;//为b设置的专门标志
		int dCount=0;int m=0;
		for(int i=0;i<len;i++)
		{
			if(numbers[i]%5==0 && numbers[i]%2==0)
				a=a+numbers[i];
			
			
			if(numbers[i]%5==1)
			{
				flagB=1;m++;
				if(m%2 !=0)
					b=b+numbers[i];
				else
					b=b-numbers[i];
			}
			
			if(numbers[i]%5==2)
				c++;
			
			if(numbers[i]%5==3)
			{
			
				d=d+numbers[i];//保存的是满足条件的和
				dCount++;
			}
			
			if(numbers[i]%5==4)
			{
				if(e<numbers[i])
					e=numbers[i];
			}
		}
		
		
		String result="";
		if(a==0)
			result=result+"N ";
		else
			result=result+String.valueOf(a)+" ";
	
		if(flagB==-32767)
			result=result+"N ";
		else
			result=result+String.valueOf(b)+" ";
		
		if(c==0)
			result=result+"N ";
		else
			result=result+String.valueOf(c)+" ";
		
		float dr=(float)d/dCount;
		BigDecimal dResult=new BigDecimal(String.valueOf(dr));
		if(d==0)
			result=result+"N ";
		else
			result=result+String.valueOf(dResult.setScale(1))+" ";
		
		
		if(e==0)
			result=result+"N";
		else
			result=result+String.valueOf(e)+" ";
			
		System.out.println(result);
		
	}

}
发表于 2017-03-24 11:36:33 回复(0)