PAT-BASIC1012——數字分類
阿新 • • 發佈:2018-12-16
題目描述:
知識點:數學
思路:先分類,再計算
本題有一個坑點:
如果被5除後餘2的數字的個數是0,不能輸出0,需要輸出N。
時間複雜度和空間複雜度均為O(n),其中n為輸入的數字個數。
C++程式碼:
#include<iostream> #include<vector> using namespace std; int main() { int count; cin >> count; int temp; vector<int> nums; for (int i = 0; i < count; i++) { cin >> temp; nums.push_back(temp); } vector<int> a1; vector<int> a2; vector<int> a3; vector<int> a4; vector<int> a5; for (int i = 0; i < nums.size(); i++) { if (nums[i] % 2 == 0 && nums[i] % 5 == 0) { a1.push_back(nums[i]); } if (nums[i] % 5 == 1) { a2.push_back(nums[i]); } if (nums[i] % 5 == 2) { a3.push_back(nums[i]); } if (nums[i] % 5 == 3) { a4.push_back(nums[i]); } if (nums[i] % 5 == 4) { a5.push_back(nums[i]); } } if (a1.size() == 0) { cout << "N "; } else { int sum = 0; for (int i = 0; i < a1.size(); i++) { sum += a1[i]; } cout << sum << " "; } if (a2.size() == 0) { cout << "N "; } else { int sum = 0; for (int i = 0; i < a2.size(); i++) { if (i % 2 == 0) { sum += a2[i]; } else { sum -= a2[i]; } } cout << sum << " "; } if (a3.size() == 0) { cout << "N "; } else { int sum = a3.size(); cout << sum << " "; } if (a4.size() == 0) { cout << "N "; } else { int sum = 0; for (int i = 0; i < a4.size(); i++) { sum += a4[i]; } double average = 1.0 * sum / a4.size(); printf("%.1f ", average); } if (a5.size() == 0) { cout << "N"; } else { int max = a5[0]; for (int i = 1; i < a5.size(); i++) { if (a5[i] > max) { max = a5[i]; } } cout << max; } }
C++解題報告:
JAVA程式碼:
import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String[] strings = scanner.nextLine().split("\\s+"); int[] nums = new int[strings.length]; for (int i = 0; i < strings.length; i++) { nums[i] = Integer.parseInt(strings[i]); } ArrayList<Integer> arrayList1 = conditionA1(nums); if(arrayList1.size() == 0){ System.out.print("N "); }else{ int sum = 0; for (int i = 0; i < arrayList1.size(); i++) { sum += arrayList1.get(i); } System.out.print(sum + " "); } ArrayList<Integer> arrayList2 = conditionA2(nums); if(arrayList2.size() == 0){ System.out.print("N "); }else{ int sum = 0; for (int i = 0; i < arrayList2.size(); i++) { if(i % 2 == 0){ sum += arrayList2.get(i); }else{ sum -= arrayList2.get(i); } } System.out.print(sum + " "); } ArrayList<Integer> arrayList3 = conditionA3(nums); if(arrayList3.size() == 0){ System.out.print("N "); }else { System.out.print(arrayList3.size() + " "); } ArrayList<Integer> arrayList4 = conditionA4(nums); if(arrayList4.size() == 0){ System.out.print("N "); }else{ int sum = 0; for (int i = 0; i < arrayList4.size(); i++) { sum += arrayList4.get(i); } double average = 1.0 * sum / arrayList4.size(); System.out.printf("%.1f ", average); } ArrayList<Integer> arrayList5 = conditionA5(nums); if(arrayList5.size() == 0){ System.out.print("N"); }else{ int max = arrayList5.get(0); for (int i = 1; i < arrayList5.size(); i++) { if(arrayList5.get(i) > max){ max = arrayList5.get(i); } } System.out.print(max); } } private static ArrayList<Integer> conditionA1(int[] nums){ ArrayList<Integer> arrayList = new ArrayList<>(); for (int i = 1; i < nums.length; i++) { if(nums[i] % 2 == 0 && nums[i] % 5 == 0){ arrayList.add(nums[i]); } } return arrayList; } private static ArrayList<Integer> conditionA2(int[] nums){ ArrayList<Integer> arrayList = new ArrayList<>(); for (int i = 1; i < nums.length; i++) { if(nums[i] % 5 == 1){ arrayList.add(nums[i]); } } return arrayList; } private static ArrayList<Integer> conditionA3(int[] nums){ ArrayList<Integer> arrayList = new ArrayList<>(); for (int i = 1; i < nums.length; i++) { if(nums[i] % 5 == 2){ arrayList.add(nums[i]); } } return arrayList; } private static ArrayList<Integer> conditionA4(int[] nums){ ArrayList<Integer> arrayList = new ArrayList<>(); for (int i = 1; i < nums.length; i++) { if(nums[i] % 5 == 3){ arrayList.add(nums[i]); } } return arrayList; } private static ArrayList<Integer> conditionA5(int[] nums){ ArrayList<Integer> arrayList = new ArrayList<>(); for (int i = 1; i < nums.length; i++) { if(nums[i] % 5 == 4){ arrayList.add(nums[i]); } } return arrayList; } }
JAVA解題報告: