1. 程式人生 > >PAT——1060. 愛丁頓數

PAT——1060. 愛丁頓數

ica rgs 距離 一行 class 自己的 http 輸出 輸入格式

英國天文學家愛丁頓很喜歡騎車。據說他為了炫耀自己的騎車功力,還定義了一個“愛丁頓數”E,即滿足有E天騎車超過E英裏的最大整數E。據說愛丁頓自己的E等於87。

現給定某人N天的騎車距離,請你算出對應的愛丁頓數E(<=N)。

輸入格式:

輸入第一行給出一個正整數N(<=105),即連續騎車的天數;第二行給出N個非負整數,代表每天的騎車距離。

輸出格式:

在一行中給出N天的愛丁頓數。

輸入樣例:

10
6 7 6 9 3 10 8 2 7 8

輸出樣例:

6

 1 package com.hone.basical;
 2 import java.util.Arrays;
 3 import
java.util.Scanner; 4 /** 5 * 原題目:https://www.patest.cn/contests/pat-b-practise/1059 6 * @author Xia 7 * 思路:拿到這個題目的第一個想法是將所有的數據排序,然後從大到小開始輸出。 8 * 試想一下最佳的情況:第i天的時候,剛好a[i] = (大於a[i]的天數)=N-i,則大於a[i]的天數則為N-i-1 9 * 那麽如果沒有相等的情況,則剛好a[i] 小於(大於a[i]的天數)=N-i 的時候,輸出結果,並且跳出循環(這是為什麽if裏面取<=) 10 * 特殊情況:如果給定N天,並且每一天的騎行都大於N,則直接輸出N
11 * 還是有一個測試點超時!!! 12 */ 13 14 public class basicalLevel1060EddingtonNumber { 15 16 public static void main(String[] args) { 17 Scanner in = new Scanner(System.in); 18 int N = Integer.parseInt(in.nextLine()); //騎車的天數 19 int[] a = new int[N]; 20 for (int i = 0; i < N; i++) {
21 a[i] = in.nextInt(); 22 } 23 24 Arrays.sort(a); 25 if (a[0] > N) { 26 System.out.println(N); 27 } 28 for (int i = a.length-1; i >= 0; i--) { 29 if (a[i] <= a.length-i) { //這裏不能等於,應該小於等於(a.length-i)表示對應的天數 30 System.out.println(N-1-i); 31 break; 32 } 33 } 34 } 35 }

PAT——1060. 愛丁頓數