PAT乙級 1060 愛丁頓數 (25 分)
阿新 • • 發佈:2018-11-28
英國天文學家愛丁頓很喜歡騎車。據說他為了炫耀自己的騎車功力,還定義了一個“愛丁頓數” 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
思路:
把題目中的測試遞減排序,並且標上序號,如下
每天騎行路程:10 9 8 8 7 7 6 6 3 2
天數:1 2 3 4 5 6 7 8 3 10
可以清楚的看到,從左往右遍歷, 只要當天的天數小於路程,愛丁頓數累加1即可。
程式碼:
#include<stdio.h> #include<stdlib.h> int cmp(const void *a,const void *b){ return -(*(int*)a-*(int*)b); } int main(){ int N,E=0; scanf("%d",&N); int cycling_distance[N]; for(int i=0;i<N;++i){ scanf("%d",&cycling_distance[i]); } qsort(cycling_distance,N,sizeof(int),cmp); for(int i=0;i<N;++i){ if(i+1<cycling_distance[i]){ ++E; } else{ break; } } printf("%d",E); return 0; }