1. 程式人生 > >PAT乙級——1012(模擬數字分類)

PAT乙級——1012(模擬數字分類)

題目:數字分類 (20 分)

給定一系列正整數,請按要求對數字進行分類,並輸出以下 5 個數字:

A​1​​ = 能被 5 整除的數字中所有偶數的和;
A​2​​ = 將被 5 除後餘 1 的數字按給出順序進行交錯求和,即計算 n​1​​−n​2​​+n​3​​−n​4​​⋯;
A​3​​ = 被 5 除後餘 2 的數字的個數;
A​4​​ = 被 5 除後餘 3 的數字的平均數,精確到小數點後 1 位;
A​5​​ = 被 5 除後餘 4 的數字中最大數字。

輸入格式:

每個輸入包含 1 個測試用例。每個測試用例先給出一個不超過 1000 的正整數 N,隨後給出 N 個不超過 1000 的待分類的正整數。數字間以空格分隔。

輸出格式:

對給定的 N 個正整數,按題目要求計算 A​1​​~A​5​​ 並在一行中順序輸出。數字間以空格分隔,但行末不得有多餘空格。

若其中某一類數字不存在,則在相應位置輸出 N。

輸入樣例 1:
13 1 2 3 4 5 6 7 8 9 10 20 16 18

輸出樣例 1:
30 11 2 9.7 9
輸入樣例 2:
8 1 2 4 5 6 7 9 16

輸出樣例 2:
N 11 2 N 9

程式碼實現

//程式碼並沒有AC,我也沒找到問題,要是有大神看到的話,希望可以幫我看一下
//總感覺用java寫PAT題目不如C++來的簡單友好
import java.util.Scanner;

public
class Main { public static void main(String []args){ Scanner input = new Scanner(System.in); int n=input.nextInt(); int num[]=new int[n]; int A1=0; int A2=0; int A3=0; float A4=0.0f; int A5=0; int count=1; for(int i=0;i<
n;i++) num[i]=input.nextInt(); int k=0; for(int i=0;i<n;i++){ if(num[i]%5==0&&num[i]%2==0) A1+=num[i]; if(num[i]%5==1){ if(count%2==1){ A2+=num[i]; }else A2-=num[i]; count++; } if(num[i]%5==2) A3++; if(num[i]%5==3){ k++; A4=(A4*(k-1)+num[i])/k; } if(num[i]%5==4){ if(num[i]>A5) A5=num[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.0f) System.out.printf(" %.1f",A4); else System.out.print(" N"); if(A5!=0) System.out.print(" "+A5); else System.out.print(" N"); } }

在這裡插入圖片描述