PAT——1060. 爱丁顿数
Posted 大黄奔跑
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT——1060. 爱丁顿数相关的知识,希望对你有一定的参考价值。
英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数”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. 爱丁顿数的主要内容,如果未能解决你的问题,请参考以下文章